因此,我尝试花一天中的大部分时间来寻找一个简单问题的答案。我希望我的 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 让我走上了正确的道路。 :)
最佳答案
查看this EnumWindows 函数的包装器。这将允许您枚举所有打开的窗口并确定它们的窗口状态。您需要检查 EnumWindowItem.Maximized 属性,如果为 true,则将 OnTop 属性设置为 false。如果没有一个 EnumWindowItem 返回 Maximized,您可以将 OnTop 设置为 true。
关于c# - 如何位于全屏应用程序顶部但不位于顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9135064/