我有一个用户实际上并没有关闭的应用程序 - 而不是关闭整个应用程序,而是隐藏了主窗口。然后,当用户再次启动同一个应用程序时,第二个实例与第一个(已经运行的)实例通信,第一个实例尝试将主应用程序窗口带到前台。
问题是这大部分会成功,但有时会失败。我做了我的研究,似乎后台进程不能将它们的窗口带到前台,这有点合理。解决方案是从第二个实例调用 AllowSetForegroundWindow(它可以将窗口带到前台,因为用户已经启动它)并授予程序第一个实例的权限。
我的问题是:如何确保我的代码有效?我问这个是因为我没有找到一种方法来检查 AllowSetForegroundWindow 调用是否有任何效果。我不知道第一个实例什么时候无法设置前景窗口(因为它大部分工作并且很少不工作),所以我不知道如何检查一切是否正常。有什么想法吗?
最佳答案
AllowSetForegroundWindow()
有一个您可以检查的返回代码:
The function will fail if the calling process cannot set the foreground window.
当您的应用程序启动时,它应该能够设置前景窗口,因此 AllowSetForegroundWindow()
应该 成功,并且您的现有应用程序的实例应该能够出现在前面。
但是没有办法保证这会一直有效。您所能做的就是尽可能地实现文档化系统。在最坏的情况下,您现有的应用程序会在其他窗口后面打开,用户必须单击它才能将其置于最前面。
关于c# - 将窗口置于前台的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18219476/