【问题标题】:2 Application Top Most problem2 应用最常见的问题
【发布时间】:2011-02-01 13:52:48
【问题描述】:

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

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

谁能帮助我? 问候,

【问题讨论】:

  • 您问如何制作“更顶级”的东西这一事实并没有向您表明您的设计可能存在问题?这不是WS_TOPMOST 的作品。
  • 我不会去猜测“stroger top most”是什么意思。您将不得不调用 SetParent()。

标签: c# .net windows winapi topmost


【解决方案1】:

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

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

所以激活你想成为top-top-topmost的窗口:-) ...

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

【讨论】:

    【解决方案2】:

    这不是你应该做的事情。

    一个应用程序或另一个应用程序是否在顶部,是您想要留给用户的东西。

    但是,有一些选择。

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

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

    【讨论】:

    • 为什么你断言一个应用程序必须在屏幕上?我必须有一个带有一些重要程序的全屏应用程序,第二个是半透明的,可以对电话上未响应的操作发出警告,然后我必须有 2 个。
    • @Svisstack - 我不完全理解你的结论我相信只有一个应用程序必须在屏幕上。你能详细说明一下吗?
    • @Pieter:一个应用程序必须始终显示在屏幕上,因为它在做非常重要的事情。第二个应用程序只在屏幕右下角打开小弹出窗口半透明窗口,我希望这个windwos在应用程序下,那么这个应用程序必须更顶层。
    • @Shivsstack - 我相信我提供的信息应该足以让您实现这一目标。您是否在我的解释中遗漏了具体信息?
    • @Shivsstack:您不能在顶部同时拥有两个应用程序。其中一个总是要掩盖另一个。是时候买一台更大的显示器了,或者再添一台。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多