1

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

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

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

4

1 回答 1

2

AllowSetForegroundWindow()有一个返回码,您可以检查:

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

当您的应用程序启动时,它应该能够设置前台窗口,因此AllowSetForegroundWindow() 应该会成功,并且您现有应用程序的实例应该能够出现在前面。

但是,无法保证这将一直有效。您所能做的就是尽可能地实施记录在案的系统。在最坏的情况下,您现有的应用程序在其他窗口后面打开,用户必须单击它才能将其带到前面。

于 2013-08-13T21:29:24.553 回答