3

我开发了 2 个应用程序,一个在 Win32 API 中,第二个在 C# WPF 中。我有一个问题,2 个应用程序必须排在最前面,但第二个(在 C# 中)必须比第一个应用程序排在最前面,问题是第二个应用程序从自动启动运行,然后总是比第一个应用程序更快启动,第一个应用程序更多最高高于第二?

我怎样才能把第二个应用程序做得更多?或者当已经有最上面并且这是在第一个应用程序下时,我如何在最上面显示第二个应用程序?

谁能帮我?问候,

4

3 回答 3

7

http://msdn.microsoft.com/en-us/library/system.windows.window.topmost.aspx

在将 Topmost 属性设置为 true 的窗口组中,当前激活的窗口是最顶层的窗口。

所以激活你想成为最顶层的窗口:-) ...

编辑:我同意 Pieter 的观点,即这样做几乎总是一个坏主意(从用户手中夺取控制权)。这就是为什么 MS 不会竭尽全力为您提供工具来做您想做的事情。我会给你怀疑的好处,而不是告诉你“不要这样做”

于 2011-02-01T13:57:36.537 回答
2

这不是你应该想做的事情。

无论是一个应用程序还是另一个应用程序,都是您想要留给用户的东西。

但是,有一些选择。

使用FindWindow,您可以找到最先启动的窗口的窗口句柄。然后,当您拥有此句柄时,您可以使用它SetWindowPos来确保您的窗口位于您找到的另一个窗口的顶部。您使用 z-ordering 参数SetWindowPos来实现这一点。

注意:这些都是 PInvoke 方法。使用 PInvokeFindWindowSetWindowPos从 C# 调用这些方法。

于 2011-02-01T13:55:24.447 回答
0

我只看到一种方式。第二个应用程序应首先监控,直到第一个应用程序午餐。之后,您应该从第二个应用程序中删除最顶级的样式并将其取回。此操作将第二个应用程序排在首位。它不优雅但有效

于 2011-02-01T14:28:15.460 回答