我使用下面的脚本来获得屏幕分辨率在Windows中使用WMI。脚本在计算机处于横向模式时工作正常,但在纵向模式时返回不正确的值。在XP中工作正常,在Vista中没有尝试。有人可以确认这是Windows 7 WMI中的bug。
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery( _
"SELECT * FROM Win32_DesktopMonitor",,48)
For Each objItem in colItems
Wscript.Echo "-----------------------------------"
Wscript.Echo "Win32_DesktopMonitor instance"
Wscript.Echo "-----------------------------------"
Wscript.Echo "ScreenHeight: " & objItem.ScreenHeight
Wscript.Echo "ScreenWidth: " & objItem.ScreenWidth
Next
7条答案
按热度按时间sxpgvts31#
为了记录在案,PowerShell代码是:
我在横向或纵向模式中得到相同的值。
更新:
在多显示器环境中,您可以使用以下命令获取所有显示器的信息:
zvokhttg2#
你可以从
Win32_VideoController
WMI类中获取它。VideoModeDescription
属性包括屏幕分辨率和颜色深度。结果
z9zf31ra3#
与其他答案相同,但对于普通cmd:
wmic path Win32_VideoController get VideoModeDescription
abithluo4#
@Shay Levy上面的答案准确地报告了启动powershell会话时活动的宽度/高度。如果您在PS启动后旋转显示器,它将继续报告原来的值,但现在不正确。
SystemInformation类提供了另一种获取方向的方法,即使在会话启动后旋转显示器,它也会在当前PS会话中更改。
然后旋转显示器。..
https://msdn.microsoft.com/en-us/library/system.windows.forms.systeminformation(v=vs.110).aspx
cgyqldqp5#
这里有一个基于Shays的答案,只是它按照OP的例子格式化每个屏幕的结果。
PowerShell代码,格式化结果:
[System.Windows.Forms.Screen]::AllScreens
副显示器横向模式输出。1920 x 1200
纵向模式下辅助显示器的输出。1200 x 1920
zsbz8rwp6#
您可以使用以下命令获得所有可用的分辨率:
ercv8c1e7#
对于Short,这将分别获得第一个屏幕(如果有很多)的宽度和高度