【问题标题】:Detecting raised-event at OS-level (OS Appearance)在操作系统级别检测引发的事件(操作系统外观)
【发布时间】:2012-06-02 21:11:13
【问题描述】:

我遇到了一个似乎很常见的问题。我在一台最棒的电脑上运行 Windows 7 Home Premium(去年买的时候),某些视觉效果会自动关闭。

我的平均用户体验评分很高,因此无法解释为什么会发生这种情况。唯一被关闭的功能是“拖动时显示窗口内容”选项。这真的让我很烦。

目前在线上没有针对此问题的有效解决方案。除了“必须与您机器上安装的另一个应用程序发生冲突。”

是的,我确实知道是什么应用程序导致了这种冲突。这是我该死的互联网提供商的软件 - 你知道……当你连接到网络时,你绝对必须始终打开该应用程序。

所以,我有一个想法。如果我可以订阅一个事件,以便我在后台运行的应用程序将检测到此“拖动时显示窗口内容”选项何时关闭 - 然后我的应用程序将再次将其重新打开。

当我手动执行此操作时,它似乎会持续大约一两个小时,然后再次关闭。

是否可以处理这些类型的事件,并重新启动某些视觉效果功能?如果有,有这方面的资源吗?

我还没有找到关于这个主题的任何东西。

【问题讨论】:

    标签: c# .net windows winforms operating-system


    【解决方案1】:

    是的,当系统设置更改时,WM_SETTINGSCHANGE 消息会发送到所有窗口。然后你可以用 SPI_GETDRAGFULLWINDOWS 调用SystemParametersInfo 来确定“拖动时显示窗口内容”是否被禁用并使用 SPI_SETDRAGFULLWINDOWS 来启用它。

    所以您需要做的就是创建一个带有表单的应用程序(甚至可以保持隐藏)并覆盖表单WndProc 并处理WM_SETTINGSCHANGE 消息并使用p/Invoke 调用SystemParametersInfoSystemParamtersInfo is available at pinvoke.net 的 p/Invoke 定义

    虽然更容易的是更改 HKCU\Control Panel\Desktop\DragFullWindows 注册表值的安全性,使其无法更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-05
      • 1970-01-01
      • 1970-01-01
      • 2014-06-25
      • 2014-04-14
      • 2012-09-11
      • 1970-01-01
      • 2011-07-08
      相关资源
      最近更新 更多