【发布时间】:2012-02-26 10:47:14
【问题描述】:
所以我尝试在一天的大部分时间里寻找一个简单问题的答案。我希望我的 C# 应用程序在计时器上弹出另一个 winform,然后在延迟后关闭它。很简单,完成并完成。现在我的问题是我希望它实际上位于其他应用程序之上,除非它们是全屏的。我的意思是真正的全屏应用程序,例如游戏。我不想干涉这样的申请,因为它应该优先于我的申请。
问题是我在弹出表单上使用了“OnTop”属性,虽然它适用于任何其他应用程序,但我在玩全屏游戏和表单时一直在测试它,当它“Show() "s,采用全屏应用程序并将其放入窗口模式。
这是全屏应用程序的“OnTop”属性的预期效果吗?如果是这样,有没有一种方法可以让我的表单弹出在普通窗口窗口之上,而不会干扰全屏应用程序?
任何链接,例如,大方向的踢球都很棒。在搜索涉及全屏的 winform 时,我遇到的唯一结果是人们试图让他们的应用程序进入全屏状态,或者让他们的应用程序将焦点从另一个应用程序上移开。
提前致谢。
(我没有发布任何代码,因为它只是一个简单的winform,它是设置了“onTop”属性的计时器上的“formX:Show()”)
(编辑)所以感谢 awilson53 让我走上了正确的轨道,我能够找到一种方法(尽管有些挑剔)来确定应用程序是否全屏。似乎有点简单,而且是一个“嗯,嗯”,毕竟答案已经说了又做了。
95% 的功劳归于文章作者:http://www.richard-banks.org/2007/09/how-to-detect-if-another-application-is.html
~5% 归功于 awilson53 让我走上正轨。 :)
【问题讨论】:
-
我不知道有什么简单的出路。但也许有办法遍历所有打开的应用程序并检查它们的窗口状态。然后为您的弹出窗口确定一种“Z 级”。
-
在不窃取焦点的情况下显示窗口可能会有所帮助。 stackoverflow.com/questions/156046/…
-
Windows 不允许表单为“最”
OnTop。如果另一个程序有相同类型的设置怎么办? -
@Josh 从之前的搜索中尝试了该问题的建议,但没有任何乐趣。 winform 不会窃取焦点,但仍会将全屏应用程序弹出到窗口模式。
-
@LarsTech 我的印象是“错误”(?)全屏应用程序优先于窗口应用程序。自从我退出全屏应用程序后,一定有办法找到一个盯着我等待输入的表单。
标签: c# winforms popup fullscreen