我开发了 2 个应用程序,一个在 Win32 API 中,第二个在 C# WPF 中。我有一个问题,2 个应用程序必须排在最前面,但第二个(在 C# 中)必须比第一个应用程序排在最前面,问题是第二个应用程序从自动启动运行,然后总是比第一个应用程序更快启动,第一个应用程序更多最高高于第二?
我怎样才能把第二个应用程序做得更多?或者当已经有最上面并且这是在第一个应用程序下时,我如何在最上面显示第二个应用程序?
谁能帮我?问候,
从http://msdn.microsoft.com/en-us/library/system.windows.window.topmost.aspx:
在将 Topmost 属性设置为 true 的窗口组中,当前激活的窗口是最顶层的窗口。
所以激活你想成为最顶层的窗口:-) ...
编辑:我同意 Pieter 的观点,即这样做几乎总是一个坏主意(从用户手中夺取控制权)。这就是为什么 MS 不会竭尽全力为您提供工具来做您想做的事情。我会给你怀疑的好处,而不是告诉你“不要这样做”
这不是你应该想做的事情。
无论是一个应用程序还是另一个应用程序,都是您想要留给用户的东西。
但是,有一些选择。
使用FindWindow
,您可以找到最先启动的窗口的窗口句柄。然后,当您拥有此句柄时,您可以使用它SetWindowPos
来确保您的窗口位于您找到的另一个窗口的顶部。您使用 z-ordering 参数SetWindowPos
来实现这一点。
注意:这些都是 PInvoke 方法。使用 PInvokeFindWindow
和SetWindowPos
从 C# 调用这些方法。
我只看到一种方式。第二个应用程序应首先监控,直到第一个应用程序午餐。之后,您应该从第二个应用程序中删除最顶级的样式并将其取回。此操作将第二个应用程序排在首位。它不优雅但有效