C++ Qt需要将Qt应用程序带到从win32应用程序调用的前台
我有一个简单的win32应用程序,它使用createProcess方法调用Qt应用程序 问题是我喜欢把Qt应用程序带到前台C++ Qt需要将Qt应用程序带到从win32应用程序调用的前台,c++,winapi,qt,C++,Winapi,Qt,我有一个简单的win32应用程序,它使用createProcess方法调用Qt应用程序 问题是我喜欢把Qt应用程序带到前台 谁对此负责?父win32应用程序或Qt应用程序?获取Qt应用程序的窗口句柄并调用SetForegroundWindow 当前具有前景焦点的应用程序是唯一允许更改前景焦点的应用程序。您需要使用来行使这项权利 文件中的“备注”部分包含适用的限制列表: 系统限制哪些进程可以设置前台窗口。仅当以下条件之一为真时,进程才能设置前景窗口: 这个过程就是前景过程 该进程由前台进程启动
谁对此负责?父win32应用程序或Qt应用程序?获取Qt应用程序的窗口句柄并调用SetForegroundWindow
当前具有前景焦点的应用程序是唯一允许更改前景焦点的应用程序。您需要使用来行使这项权利 文件中的“备注”部分包含适用的限制列表: 系统限制哪些进程可以设置前台窗口。仅当以下条件之一为真时,进程才能设置前景窗口:
- 这个过程就是前景过程
- 该进程由前台进程启动
- 进程接收到最后一个输入事件
- 没有前台进程
- 正在调试前台进程
- 前景未被锁定(请参见
)locksetforegroundindow
- 前台锁定超时已过期(请参阅
中的systemparameters sinfo
)SPI\u GETFOREGROUNDLOCKTIMEOUT
- 没有激活的菜单
真正的问题是你为什么要这么做。更改前台应用程序很可能会给您带来麻烦,可能是因为Windows对其设置了所有限制,也可能是因为您的用户。这是一种非常不利于用户的行为,这也是Windows近年来收紧对其限制的原因之一。您可能希望从父进程执行此操作。最干净/最可靠的使用方法是从当前处于前台的进程调用它。没有Qt方法吗?我的问题是:当用户按下“设置”按钮时,一个新窗口会打开,但如果他们不观察并再次按下“设置”按钮,则“设置”窗口将停留在后面,我想说“嘿,我在这里。这里,我为你弹出了前面的窗口”。一个解决方案是先设置为setVisibile(false),然后设置为setVisibile(true),但我不喜欢这个解决方案,它应该在前面弹出,而不需要再次关闭和打开它。我不能使用Windows API,因为应用程序是跨平台的,我不想阻止它。@Moraru:是的,这相对简单,因为设置窗口是由您自己的应用程序创建的。这里的问题是试图从其他应用程序(进程)激活windows。Windows试图阻止此操作,因为开发人员曾经严重滥用此操作。但是,如果您是响应用户启动的操作(单击,热键),则设置前台窗口是完全有效的操作这是用户期望发生的行为。设置前台窗口和更改前台应用程序之间有区别。