SetForegroundWindow如果子进程具有焦点

时间:2018-11-02 10:59:34

标签: c# winapi

我已经开发了一个应用程序,该应用程序可以启动外部进程(例如记事本等),并在我的应用程序的面板内显示该进程的主窗口。 (如this线程中所述)

问题是我对此有很多关注点问题。例如。当一个窗口位于我的应用程序窗口上方并且我单击子进程的窗口时,主窗口不会进入前台。

我试图通过在子进程获得焦点时从主应用程序调用SetForegroundWindow来解决此问题,但是正如thisthis线程所描述的,只有在调试或调试进程时,此方法才有效如果是前台进程。可以通过调用AttachThreadInput来解决此问题,但这不能100%可靠。

如果“该进程是由前台进程启动的”,则

SetForegroundWindow也应该起作用,但是在我的情况下,这是相反的方法。 (前台进程由该进程启动)

如果聚焦窗口是我进程的子进程,是否有一种方法可以正确设置前景窗口?

1 个答案:

答案 0 :(得分:1)

SetForegroundWindow将创建指定窗口的线程设置为前景。

BringWindowToTop将指定的窗口带到Z顺序的顶部。