排错实战 | 你知道拖动窗口时只显示虚框怎么设置吗?

前言

不知道大家有没有留意过,我们在拖动窗体的时候,有时候显示的是虚框,有时候显示的是窗体内容。可能有的朋友不是太明白,没关系,一图胜千言。请看图:

拖动时显示窗体内容

拖动时不显示窗体内容,只显示虚框

这下应该知道我在说什么了吧,但是具体是哪个选项跟拖动时的显示效果有关呢?:thinking:

设置

一个偶然的机会,我发现在性能选项里可以设置拖动时的显示效果。

我的电脑右键属性,点击高级系统设置按钮,在弹出的系统属性对话框中的高级 Tab页下的 性能组,点击设置(S)...按钮,在弹出的性能选项对话框中,选择自定义(C)...,勾选拖动时显示窗口内容复选框。即可在拖动时显示窗口内容,取消勾选后,拖动时只会显示虚框。具体设置如下图:

drag-full-windows-setting

现在,我们知道在哪里设置了,如果用代码该怎么实现呢?我们知道,在windows下,很多设置都是保存在注册表中的。如果我们能找到对应的注册表项,那么我们就可以用代码修改对应的注册表项就可以啦。但是这个设置对应的注册表项是哪个呢?我们应该怎么找到它呢?看过之前几篇排错文章的朋友一定猜到了,用process monitor啊!在继续阅读之前,强烈建议你自己动手实战一下。

小提示: 因为是保存设置到注册表,所以我们只保留注册表事件即可。

追本溯源

相信你已经自己动手找到关键的注册表项了:+1:。不过我还是把我的调查过程的录屏贴出来,方便没来得及手动实战的读者查阅。

show-full-windows-setting-screen-record

原来该设置对应的注册表项是 HKCU\Control Panel\Desktop\DragFullWindows。值为1时拖动时显示窗体内容,值为0时拖动时只显示虚框。

保存下面的代码为drag-full-window.reg,双击导入注册表即可(重启生效)。

1
2
3
4
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Control Panel\Desktop]
"DragFullWindows"="1"

知道对应的注册表项,用代码实现这个功能应该不难了吧?快快动手搞定它吧!

总结

  • windows的很多设置都存放在注册表里,我们通过GUI改变某项设置时,会更新对应对应的注册表值。

  • process monitor真是排错利器,心动了吗?赶快下载试用吧。

参考资料

  • 《Windows Sysinternals 实战指南》
BianChengNan wechat
扫描左侧二维码关注公众号,扫描右侧二维码加我个人微信:)
0%