我正在编写一个应用程序,需要将外部应用程序的窗口带到前台,而不一定是窃取焦点(有一个设置,用户可以切换以窃取/不偷取焦点).
使用win32 API进行此操作的最佳方法是什么?我已经尝试过SetForeground(),但它总是窃取焦点并且不能一致地工作.
最好的方法是什么?有什么想法吗?
小智 17
SetForegroundWindow应该可以窃取焦点,并且在某些情况下它会失败.
SetForegroundWindow函数将创建指定窗口的线程放入前台并激活窗口.键盘输入指向窗口
在拨打电话之前尝试使用SetCapture捕捉焦点.还要看看将窗口置于前面的不同方法:SetForeGroundWindow,SetActiveWindow,甚至模拟鼠标点击都可以做到这一点.
SetForeGroundWindow,SetActiveWindow和BringWindowToTop有什么区别?似乎他们都做同样的事情.
根据MSDN,SetForeGroundWindow将激活窗口并将键盘焦点直接指向它.即使您的流程处于后台,这也会尝试工作.SetActiveWindow与SetForeGroundWindow做同样的事情,但如果你的应用程序不是最前面的应用程序,它就不会做任何事情.最后,BringWindowToTop仅将窗口置于顶部,并且不会更改键盘焦点.
| 归档时间: |
|
| 查看次数: |
14887 次 |
| 最近记录: |