【发布时间】:2013-08-13 21:22:48
【问题描述】:
我有一个用户实际上并没有关闭的应用程序 - 不是关闭整个应用程序,而是隐藏了主窗口。然后当用户再次启动同一个应用程序时,第二个实例与第一个(已经运行的)实例通信,第一个实例尝试将主应用程序窗口置于前台。
问题是这主要是成功的,但有时会失败。我已经完成了我的研究,似乎后台进程无法将它们的窗口带到前台,这在某种程度上是合理的。解决方案是从第二个实例调用 AllowSetForegroundWindow(它可以将一个窗口带到前台,因为用户已经启动它)并授予程序的第一个实例权限。
我的问题是:如何确保我的代码有效?我问这个是因为我没有找到检查 AllowSetForegroundWindow 调用是否有任何效果的方法。我不知道第一个实例何时无法设置前景窗口(因为它大部分都可以工作,很少不工作),所以我不知道如何检查一切是否正常。有什么好办法吗?
【问题讨论】:
-
有一个总是有效的肮脏把戏。这实际上是 .NET 框架中内置的一个技巧,将其提升为受支持的污垢。不是每个 C# 程序员都能deal with it,但绝望总是有帮助的。
-
@HansPassant:谢谢,很高兴知道所有技巧 :)