c# - 如何位于全屏应用程序顶部但不位于顶部

标签 c# winforms popup fullscreen

因此,我尝试花一天中的大部分时间来寻找一个简单问题的答案。我希望我的 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/

相关文章:

facebook - 如何在同一窗口而不是弹出窗口中打开 facebook 登录对话框?

javascript - 需要在页面后面打开弹出窗口

c# - 单个项目中的 Identityserver4 和 API

c# - WPF : Remove control's explicit foreground color

c# - String.join 来自最后一个元素的数组

winforms - .NET 桌面应用程序的 MVC 框架

javascript - 如何在不点击popup的情况下将数据从popup.html发送到content_script

c# - 循环访问 IQueryable 的属性

c# - 单击 NotifyIcon 切换表单可见性并在其他地方单击时隐藏它

.net - 使用 SetDefaultDllDirectories 中断字体处理