【发布时间】:2019-04-25 13:01:21
【问题描述】:
Windows 定义了很多快捷键(see here),包括 WIN+D 组合到“显示和隐藏桌面”。
我正在开发一个使用 C# 和 WPF 开发的应用程序,我必须对隐藏桌面做出反应,例如用户按下了 WIN+D。
到目前为止,我尝试了几种方法。首先,我注册了Control.VisibleChanged 和Window.StateChanged 事件。不幸的是,隐藏桌面不会触发其中之一,即当桌面被隐藏时,我的应用程序的窗口既不会最小化也不会不可见。
接下来,我尝试挂钩自己的应用程序以获取更多信息。我为此使用了SetWinEventHook。我在各种情况下都有大量事件,但没有说“嘿,你的桌面现在被隐藏了”。我希望为我的主窗口获得一个EVENT_OBJECT_HIDE 或类似EVENT_OBJECT_CLOAKED 或EVENT_SYSTEM_DESKTOPSWITCH 的东西。
我的想法不多了。你知道当桌面被隐藏时有什么方法可以得到通知吗(例如按 WIN+D)?
【问题讨论】:
-
我在考虑。但是,我更喜欢对事件本身做出反应,这是一种更简洁的方法,因为当事件是由任何其他来源而不是快捷方式引起时,我也可以对事件做出反应。
-
我绝对不会挂上WIN+D,因为你不仅可以用键盘快捷键隐藏桌面,我会尝试专注于WinEvents
-
Win10 & 7 - 当我按下 Ctrl+D 或使用“显示桌面”任务栏装订线时,
this.WindowState为Minimized的Window_StateChanged处理程序为我触发 ... -
你想在你的应用被隐藏时得到通知,我想知道是
Win+D导致EVENT_SYSTEM_MINIMIZESTART还是Alt+Tab导致EVENT_OBJECT_SHOW。编辑:这与亚历克斯的评论非常相似