我正试图通过批处理文件找出一种检测用户分辨率是高于还是低于“1280 x 1024”的方法。
如果分辨率为“1280 x 1024”或更高,则执行A.否则执行B.
有没有人知道如何做到这一点?
干杯,
埃利奥特
答案 0 :(得分:3)
作为注册表的替代方案,您还可以通过Wmic
检查解决方案:
wmic desktopmonitor where availability=3 get screenHeight,screenWidth
有关 Win32_DesktopMonitor 课程的更多信息,请访问:http://msdn.microsoft.com/en-us/library/windows/desktop/aa394122%28v=vs.85%29.aspx
警惕如果连接的监视器超过1个,可以获得多行 - 您应该在脚本中处理这些情况。
答案 1 :(得分:2)
由于以下几个原因,这有点棘手:
解决方案位于注册表中,您可以使用reg.exe
进行查询。然而,它并不容易找到。对我而言,它在
HKLM\SYSTEM\CurrentControlSet\Control\Video\{7FD4F64D-A7B2-41A9-AEEB-835BE4473FFA}\0000
<{1}}和DefaultSettings.XResolution
中的。但是,GUID可能会因您拥有的视频卡和驱动程序而异,因此您必须在DefaultSettings.YResolution
下进行全部迭代。
更高分辨率是什么意思? 1366×768会高于1280×1024吗?你算上总像素数吗?一维更高?在两个?
无论如何,我拼凑了以下批次。必要时进行调整。它在我的机器上产生了正确的结果,但我没有那么多可以测试。
HKLM\SYSTEM\CurrentControlSet\Control\Video
答案 2 :(得分:0)
在我的情况下,wmic desktopmonitor
不返回任何内容。
这个适用于Win 8.1
@ECHO OFF
for /f "delims=" %%# in ('"wmic path Win32_VideoController get CurrentHorizontalResolution,CurrentVerticalResolution /format:value"') do (
set "%%#">nul
)
echo %CurrentHorizontalResolution%
echo %CurrentVerticalResolution%