c# - SetForegroundWindow 如果子进程有焦点
问题描述
我开发了一个应用程序,它启动外部进程(例如记事本等)并在我的应用程序的面板内显示进程的主窗口。(就像在这个线程中描述的那样)
问题是我遇到了很多焦点问题。例如,当一个窗口在我的应用程序窗口上方并且我单击子进程的窗口时,主窗口不会出现在前台。
当子进程获得焦点时,我试图通过从主应用程序调用 SetForegroundWindow 来解决这个问题,但是因为这个和这个线程描述的只有当进程正在被调试或者它是前台进程时才有效。通过调用 AttachThreadInput 有一种解决方法,但这并不是 100% 可靠的。
如果“进程由前台进程启动”,SetForegroundWindow 也应该工作,但在我的情况下,它是另一种方式。(前台进程被进程启动)
如果焦点窗口是我的进程的子进程,有没有办法获得设置前景窗口的权利?
解决方案
SetForegroundWindow 将创建指定窗口的线程设置到前台。
BringWindowToTop将指定窗口带到 Z 顺序的顶部。
推荐阅读
- javascript - 浏览器中的多用户语音聊天 [JavaScript 和 NodeJS]
- wordpress - 为什么 $wpdb 可以在 localhost 上工作,但不能在服务器上工作
- xml - XML 目录应该能够解析模块吗?
- tensorflow - 在大型语料库上获得 tensorflow 通用句子嵌入的快速方法是什么?
- javascript - 钥匙更换/钥匙功能
- parallel-processing - Julia 中的并行处理引发错误
- c++ - 如何解决 ANTLR CPP14 语法中的解析错误
- reactjs - 使用 MomentJS 查看事件还剩多少时间
- python - 在python中拟合泊松直方图的问题
- python - 在我的 python 代码中添加 mysql 密码是否安全?