【发布时间】:2010-06-30 15:28:04
【问题描述】:
我有一个应用程序,我在其中使用通知图标来显示一些气球提示。但是,它将在始终有一个单独的主应用程序以全屏模式运行的环境中运行。我的问题是让任务栏出现在前面 - 我认为当系统托盘中的通知图标上出现气球提示时它会自动出现。
我可以让任务栏在全屏模式下运行的应用上可见吗?
我尝试了以下方法,但这不是隐藏或取消隐藏任务栏的情况 - 这是将其置于最前面或使正在运行的应用程序不是全屏的情况...
int TaskBarHwnd = FindWindow("Shell_traywnd", "");
bool result1 = SetWindowPos(TaskBarHwnd, 0, 0, 0, 0, 0, SWP_HIDEWINDOW); // Hide Taskbar
bool result1 = SetWindowPos(TaskBarHwnd, 0, 0, 0, 0, 0, SWP_SHOWWINDOW); // Show Taskbar
编辑 一定有办法做到这一点 - 如果我正在看电影并且我的电池电量不足,那么任务栏会向上滑动并且我会收到有关电池的通知。我需要找出操作系统做了什么来获得这种行为......
编辑 值得一提的是,全屏应用的源代码在我们的控制之下。这确实改变了公平问题,但我仍然想知道一种“中断”全屏应用程序的方法,无论您是否有控制权。
【问题讨论】:
-
通知不应在全屏应用上显示 - 我不希望它们打断我的演示或电影。
-
感谢迈克尔的回复,但不要告诉我您在看电影时的偏好是什么等。您能回答提出的问题吗?如果您再次阅读该问题,我不会问是否应该这样做,我会问是否可以这样做。谢谢。
-
对不起,我有点太微妙了。通知不应显示在全屏应用程序上,系统确实会主动尝试阻止此类行为,这就是您遇到问题的原因。
-
好的,这很公平,也很有意义——一个好的操作系统应该阻止这样的事情,为清除它而欢呼。在这种情况下,全屏应用程序在专有手持设备上运行,其唯一目的是运行该应用程序。然而,当有可用更新时,第二个应用程序应该显示通知 - 这些在全屏后会丢失......
-
我现在在想(在阅读了很多内容之后)自定义控件——比如半透明的 winform——在这里会是一个更好的解决方案......