【问题标题】:How can I detect a hidden Desktop?如何检测隐藏的桌面?
【发布时间】:2019-04-25 13:01:21
【问题描述】:

Windows 定义了很多快捷键(see here),包括 WIN+D 组合到“显示和隐藏桌面”。

我正在开发一个使用 C# 和 WPF 开发的应用程序,我必须对隐藏桌面做出反应,例如用户按下了 WIN+D。

到目前为止,我尝试了几种方法。首先,我注册了Control.VisibleChangedWindow.StateChanged 事件。不幸的是,隐藏桌面不会触发其中之一,即当桌面被隐藏时,我的应用程序的窗口既不会最小化也不会不可见。

接下来,我尝试挂钩自己的应用程序以获取更多信息。我为此使用了SetWinEventHook。我在各种情况下都有大量事件,但没有说“嘿,你的桌面现在被隐藏了”。我希望为我的主窗口获得一个EVENT_OBJECT_HIDE 或类似EVENT_OBJECT_CLOAKEDEVENT_SYSTEM_DESKTOPSWITCH 的东西。

我的想法不多了。你知道当桌面被隐藏时有什么方法可以得到通知吗(例如按 WIN+D)?

【问题讨论】:

  • 我在考虑。但是,我更喜欢对事件本身做出反应,这是一种更简洁的方法,因为当事件是由任何其他来源而不是快捷方式引起时,我也可以对事件做出反应。
  • 我绝对不会挂上WIN+D,因为你不仅可以用键盘快捷键隐藏桌面,我会尝试专注于WinEvents
  • Win10 & 7 - 当我按下 Ctrl+D 或使用“显示桌面”任务栏装订线时,this.WindowStateMinimizedWindow_StateChanged 处理程序为我触发 ...
  • 你想在你的应用被隐藏时得到通知,我想知道是Win+D导致EVENT_SYSTEM_MINIMIZESTART还是Alt+Tab导致EVENT_OBJECT_SHOW。编辑:这与亚历克斯的评论非常相似

标签: c# wpf


【解决方案1】:

如果有人遇到同样的问题,我找到了解决问题的方法。当您将属性ResizeMode 设置为NoResize 时,按WIN+D 最小化/恢复桌面时,您将不会获得WindowState 属性更新。我可以从我们的源代码中删除它,因为它是应用程序早期阶段的遗物。

【讨论】:

    猜你喜欢
    • 2017-05-10
    • 1970-01-01
    • 2021-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多