2013-04-06 44 views
1

我试图找到/写脚本(现有脚本是一个批处理文件,虽然如果VBS,我总是可以在批处理文件中调用它),可以检测当前屏幕分辨率是宽屏格式,以便我可以将适当的背景图像复制到机器上。我只找到了一些具有相同代码的帖子,并且一个回复说你总是可以设置图像被拉伸。但这意味着图像可能会被扭曲(正如其他人所说的那样)。批处理或VBScript来检查Windows分辨率是否宽屏

我发现从this post以下VBScript,虽然它似乎只能在Windows XP上工作(虽然我还没有尝试Windows 7 32位)。在Windows 7 64中,它只是跟踪星号。

Set objWMIService = GetObject("Winmgmts:\\.\root\cimv2") 
Set colItems = objWMIService.ExecQuery("Select * From Win32_DesktopMonitor where DeviceID = 'DesktopMonitor1'",,0) 
For Each objItem in colItems 
intHorizontal = objItem.ScreenWidth 
intVertical = objItem.ScreenHeight 
Next 

msgbox intHorizontal & " * " & intVertical 

但即使我能得到这个脚本工作,我想还是要拥有多个IF对水平&垂直匹配宽屏分辨率的列表。除非有一个我可以使用的数学公式(我肯定有这个公式)。但无论如何,我需要一个适用于XP和7(32 & 64)的脚本,或者如果需要,每个操作系统或体系结构都需要两个脚本。

由于提前,

布赖恩

+0

好的,我找到了我的数学方程。如果W/H = 1.33(或1.25比例为5:4),则宽高比为4:3,否则为宽屏幕(1.6至1.78)。所以现在我只需要获得一个适用于所有操作系统和体系结构的脚本,并且可以将此公式应用到其中。 – Brian 2013-04-06 19:52:18

+2

行,所以这个工作正常: '如果intHorizo​​ntal/IntVertical <= 1.334然后 \t纵横= “4:3” \t WScript.Echo看点 \t否则 \t纵横= “宽屏” \t WScript.Echo看点 End if' 我测试了原始代码来枚举XP和Win7(32和64)虚拟机的分辨率,并且它们都正常工作。但在我的主机(7/64)上,它只是回显“*”,没有分辨率。唯一可以看到的是我有两台显示器。我检查了WMI正在运行。 – Brian 2013-04-06 22:57:13

+0

哇,我知道我很快就会找到答案,我不会打扰这张贴。这WMI似乎做工精美: '设置colItems的= objWMIService.ExecQuery( “SELECT * FROM Win32_VideoController” ,, 48) 对于每个objItem在colItems的 intHorizo​​ntal = objItem.CurrentHorizo​​ntalResolution intVertical = objItem.CurrentVerticalResolution Next' – Brian 2013-04-07 01:00:11

回答

0

所以对于延迟对不起,我经常,我不是在这里。我最后的评论是有效的答案/解决方案。