将窗口带到前台的问题

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

问题是这主要是成功的,但有时会失败。 我已经完成了我的研究,似乎后台进程不能把他们的窗口放在前台,这是合理的。 解决的办法是从第二个实例调用AllowSetForegroundWindow(这可以将一个窗口带到前台,因为用户已经启动了它),并给予该程序的第一个实例的权限。

我的问题是:我怎样才能确保我的代码工作? 我问这是因为我没有find一种方法来检查AllowSetForegroundWindow调用是否有任何效果。 我不知道什么时候第一个实例不能设置前景窗口(因为它大部分是工作的,很less不会),所以我不知道如何检查一切工作是否正常。 任何ides?

AllowSetForegroundWindow()有一个你可以检查的返回码:

如果调用进程不能设置前景窗口,该函数将失败。

当你的应用程序启动时,它应该能够设置前台窗口,所以AllowSetForegroundWindow() 应该成功,你现有的应用程序的实例应该能够到达前面。

但是,没有办法保证这将始终工作。 你所能做的只是实现文件化的系统,你也可以。 在最糟糕的情况下,您现有的应用会在其他窗口后面打开,用户必须点击才能将其展示在前面。