【发布时间】:2023-03-10 04:37:01
【问题描述】:
我有一个应用程序调用其他一些实用程序应用程序来为特定设备设置一些设置。该实用程序应用程序是使用 ShellExecuteEx 调用的。
为了不让用户感到困惑,最好将实用程序应用程序的窗口设置为我的主窗口。如何做到这一点?
我尝试过的事情:
- ShellExecuteEx 后进程上的 WaitForSingleObjectEx,INFINITE TIMEOUT - 窗口是模态的,但主应用程序不会重新绘制(因为它正在等待单个对象!)
- ShellExecuteEx 后进程上的 WaitForSingleObjectEx,一些小的超时,然后调用 Peekmessage 和 DispatchMessage - 重绘现在可以工作,但实用程序应用程序不再是“模态”。主应用程序响应鼠标点击、按钮点击等
- EnableWindow(FALSE),然后执行方法 #2,然后 EnableWindow(TRUE) - 工作!!!,但在此之后,我的应用程序的 z 顺序发生了变化。 (它现在位于其他窗口下方)。为什么?!
【问题讨论】:
-
请求编辑:标题更改为“如何使子进程窗口在我的进程中显示为模态?”。您当前的标题没有反映制作子窗口模式和将窗口注入另一个进程之间的区别(请参阅 SetParent())