提问人:Eli 提问时间:7/12/2009 更新时间:10/22/2015 访问量:3743
以编程方式更新桌面“拖动时显示窗口内容”设置
Update desktop "show window contents while dragging" setting programatically
问:
我的一个程序似乎正在更改显示属性>外观>效果>显示窗口内容,同时每隔几个小时将设置拖动一次。
我不确定确切是哪个程序,或者它何时发生。我有许多程序似乎是罪魁祸首——壁纸旋转器、用于多个显示器的软件、多个虚拟桌面和开关,以及其他一些程序。
我只是想创建一个小批处理脚本来定期运行并将设置重新设置为打开。
有谁知道如何在 Windows 中执行此操作?我正在使用 xp pro sp3。
谢谢!
答:
我怀疑它保存在注册表中 - 也许是 [HKEY_CURRENT_USER\Control Panel\Desktop] - “DragFullWindows”?
使用批处理文件,可以很容易地每隔一小时左右将注册表设置翻转回“1”。
您可以使用 RegMon 查找不断更改设置的程序。也许这是一个比绕过它更好的开始。
评论
似乎控制该首选项的注册表设置是 HKCU\Control Panel\Desktop\DragFullWindows。你可以在这里阅读更多关于它的信息。但是,在我自己的计算机上尝试它不会立即注册更改,因此批处理脚本不会这样做。您可能需要编写一个程序来使用 SystemParametersInfo() 来操作它。您可以将 SPI_SETDRAGFULLWINDOWS 参数传递给它。这里有一个页面对此进行了更多解释。这里有一个页面,显示了如何调用它,尽管不是针对相同的参数。
最好的选择是使用受支持的 API 以编程方式执行此操作。我还没有测试过这个,但它应该可以解决问题:
SystemParametersInfo(SPI_SETDRAGFULLWINDOWS,
TRUE,
NULL,
SPIF_UPDATEINIFILE | SPIF_SENDCHANGE)
您可以使用SPI_GETDRAGFULLWINDOWS来查看位是否已被翻转,以避免不必要地触发WM_SETTINGCHANGE。
评论
这个问题有一个简单有效的解决方案。在记事本中,键入以下行:
Windows 注册表编辑器版本 5.00
[HKEY_CURRENT_USER\控制面板\桌面]“DragFullWindows”=“1”
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\DragFullWindows]“CheckedValue”=dword:00000001 “UncheckedValue”=dword:00000001
将文件另存为“Show Window Contents.reg” 双击此文件并重新启动将永久解决问题。如果您觉得这有用,请发布消息。
阿拉文德·班纳吉
评论