我们如何防止弹出窗口出现在应用程序之上?

时间:2010-01-12 08:31:24

标签: c# .net wpf popup fullscreen

我有一个全屏窗口,我想阻止出现在屏幕右下角的弹出窗口。我将Topmost属性设置为true,但显然它没有帮助。我也试过激活表单并在停用后给予焦点,但这也无济于事。当用户使用全屏应用时,有什么方法可以忽略此类窗口?我是C#中的.NET编程。

4 个答案:

答案 0 :(得分:5)

你不能这样做,这就失败了“如果两个程序试图这样做”测试:

  1. 这些弹出窗口只是像你这样的普通窗口,它们也使用与你使用的最顶级样式。
  2. 如果有办法永远高于其他最顶层的窗口,他们会使用它也会使它无用(因为其他应用程序的作者同样担心用户错过了他们的“超级重要”通知,因为你是关于他们干扰你的全屏应用程序)。
  3. 你可以尝试玩肮脏的技巧来迫使你的窗口达到最顶级的z顺序的顶部,但那些弹出窗口可能会使用完全相同的技巧,再次使这一切都无用(并作为一个额外的奖金所有那些肮脏的技巧可以将你的应用变成兼容性的噩梦。)

答案 1 :(得分:2)

您可以使用以下步骤停用这些气球通知:

  1. 单击“开始”,“运行”,然后键入regedit
  2. 导航到以下子项:

    HKEY_CURRENT_USER \软件\微软\的Windows \ CurrentVersion \ Explorer中\高级

  3. 在右侧窗格中,创建名为 EnableBalloonTips

  4. DWORD
  5. 双击新条目,并为其指定值 0
  6. 退出注册表编辑器。
  7. 注销Windows (这不是很酷......),然后重新登录以使更改生效。
  8. 如果您需要有关如何通过程序执行此操作的帮助,请不要犹豫;)

答案 2 :(得分:0)

我认为你不能阻止所有弹出窗口,Windows可能不会让你这样做。但您可以尝试使用SetWindowPos function并将其传递给HWND_TOP参数。它可能比Topmost = true好一点。

答案 3 :(得分:0)

我在用WPF编写的个人项目SvnRadar中使用了sys托盘弹出窗口控件。

控制权在Philipp Sumi撰写的http://www.hardcodet.net/projects/wpf-notifyicon处。 非常好。只需要将它从SysTray屏幕坐标和“分离”它 让它出现在你想要的地方。 希望能帮助到你。 祝你好运。