繁体   English   中英

将窗口置于前台的问题

[英]Problems with bringing window to foreground

我有一个用户实际上没有关闭的应用程序-隐藏主窗口而不是关闭整个应用程序。 然后,当用户再次启动同一应用程序时,第二个实例与第一个(已运行)实例进行通信,第一个实例尝试将主应用程序窗口置于前台。

问题在于,这种方法大多数情况下都会成功,但有时会失败。 我已经完成了研究,似乎后台进程无法将其窗口置于前台,这在一定程度上是合理的。 解决方案是从第二个实例调用AllowSetForegroundWindow(由于用户已启动它,因此可以将窗口带到前台),并授予该程序的第一个实例的权限。

我的问题是:如何确保我的代码能正常工作? 我之所以这样问是因为我没有找到一种方法来检查AllowSetForegroundWindow调用是否有效。 我不知道什么时候第一个实例将无法设置前景窗口(因为它大多数都可以工作,而很少不能),所以我不知道如何检查一切是否正常。 有想法吗?

AllowSetForegroundWindow()具有返回码,您可以检查该返回码:

如果调用进程无法设置前台窗口,则该功能将失败。

启动应用程序时,它应该能够设置前景窗口,因此AllowSetForegroundWindow() 应该成功,并且现有应用程序的实例应该能够位于最前面。

但是,没有办法保证这将一直有效。 您所能做的就是尽可能地实施文档化的系统。 在最坏的情况下,您现有的应用会在其他窗口后面打开,用户必须单击它才能将其置于最前面。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM