Qt需要将Qt应用程序带到win32应用程序调用的前台

时间:2011-05-07 08:22:36

标签: c++ winapi qt

我有一个简单的win32应用程序,它使用createProcess方法来调用Qt应用程序。

问题在于我喜欢将Qt应用程序带到前台。

谁对此负责?父win32应用程序或Qt应用程序?

3 个答案:

答案 0 :(得分:3)

当前具有前景焦点的应用程序是唯一允许更改前景焦点的应用程序。您需要使用SetForegroundWindow function来行使此权利。

文档中的“备注”部分包含适用的限制列表:

  

系统限制哪些进程可以设置前景窗口。仅当满足下列条件之一时,进程才能设置前台窗口:

     
      
  • 该过程是前台过程。
  •   
  • 该过程由前台进程启动。
  •   
  • 该过程收到了最后一个输入事件。
  •   
  • 没有前台进程。
  •   
  • 正在调试前台进程。
  •   
  • 前景未锁定(请参阅LockSetForegroundWindow)。
  •   
  • 前台锁定超时已过期(请参阅SPI_GETFOREGROUNDLOCKTIMEOUT中的SystemParametersInfo)。
  •   
  • 没有菜单处于活动状态。
  •   
     

当用户使用另一个窗口时,应用程序无法强制窗口到达前台。相反,Windows会闪烁窗口的任务栏按钮以通知用户。

真正的问题是为什么你需要这样做。更改前台应用程序很可能会让您遇到麻烦,无论是Windows上的所有限制还是您的用户。这是一个非常用户敌意的行为,这是近年来Windows加强对它的限制的原因之一。

答案 1 :(得分:2)

获取Qt应用程序的窗口句柄并调用SetForegroundWindow

http://msdn.microsoft.com/en-us/library/ms633539.aspx

答案 2 :(得分:0)

您可能希望从父进程执行此操作。使用SetForegroundWindow的最干净/最可靠的方法是从当前位于前台的进程调用它。