标题:
[注册表类]
如何获取多显示器下,仍在连接的最大显示器的分辨率?(已解决60%)
[打印本页]
作者:
houxiren
时间:
2016-12-10 15:08
标题:
如何获取多显示器下,仍在连接的最大显示器的分辨率?(已解决60%)
本帖最后由 pcl_test 于 2016-12-11 19:13 编辑
如果获取多显示器下,仍在连接的最大显示器的分辨率?(已解决60%)
只要是电脑曾经连接过的显示器,就会在注册表里留下痕迹,且就算该显示器已经断开了,痕迹仍然在。
以WIN7以及WIN10为例是在HKLM\SYSTEM\CurrentControlSet\Hardware Profiles\UnitedVideo\CONTROL\VIDEO\{84F85163-5FAD-4F8A-9541-40996D6481C1}
({84F85163-5FAD-4F8A-9541-40996D6481C1}这个名字不同电脑,不同)
我的电脑上外接了曾经外接了一台显示器,此时已断开。该注册表如下
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\UnitedVideo\CONTROL\VIDEO\{84F85163-5FAD-4F8A-9541-40996D6481C1}\0000]
"Attach.ToDesktop"=dword:00000001
"DefaultSettings.XResolution"=dword:00000556
"DefaultSettings.YResolution"=dword:00000300
备注此处分辨率是556*330,是十六进制的,十进制是1366*768
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\UnitedVideo\CONTROL\VIDEO\{84F85163-5FAD-4F8A-9541-40996D6481C1}\0001]
"Attach.ToDesktop"=dword:00000000
"DefaultSettings.XResolution"=dword:00000780
"DefaultSettings.YResolution"=dword:00000438
备注此处分辨率是780*438,是十六进制的,十进制是1920*1080
其中"Attach.ToDesktop"=dword:00000001表示此显示器仍在连接状态,"Attach.ToDesktop"=dword:00000000表示此显示器已断开。
用以下代码可以获得1920*1080,但是1920*1080这台显示器断开了,获取的仍为1920*1080。
@echo off
for /f "tokens=1,3 eol=H skip=8" %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Hardware Profiles\UnitedVideo\CONTROL\VIDEO" /s') do (
if /i "%%a"=="DefaultSettings.XResolution" (set /a X=%%b) else (
if /i "%%a"=="DefaultSettings.YResolution" set /a Y=%%b
)
)
echo "%X%"*"%Y%"
pause
有两个方式可行,但不知道怎么达到。(最好的方式是第2种,因为如果是笔记本,屏幕是可关闭的,而关闭时"Attach.ToDesktop"键值为0,但删除后,下次开启屏幕会出错)
1,用什么代码可以根据"Attach.ToDesktop"=dword:00000000是否为0,而删除该项,如上面就是删除
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\UnitedVideo\CONTROL\VIDEO\{84F85163-5FAD-4F8A-9541-40996D6481C1}\0001]
这样再运行上面的代码就一定能获取有效的分辨率。
2,用"Attach.ToDesktop"=dword:00000000的0乘于"DefaultSettings.XResolution"=dword:00000780,等于0
用"Attach.ToDesktop"=dword:00000001的1乘于"DefaultSettings.XResolution"=dword:00000556,等于1366
1366>0,所以取1366
这个代码不会编。
求助坛友前辈,谢谢了!!
欢迎光临 批处理之家 (http://www.bathome.net/)
Powered by Discuz! 7.2