找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 22140|回复: 0

[注册表类] 如何获取多显示器下,仍在连接的最大显示器的分辨率?(已解决60%)

[复制链接]
发表于 2016-12-10 15:08:09 | 显示全部楼层 |阅读模式
本帖最后由 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
   这个代码不会编。

求助坛友前辈,谢谢了!!

评分

参与人数 1PB -4 收起 理由
pcl_test -4 未按版规发帖

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 10:17 , Processed in 0.018430 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表