以下这个代码在win32位上可以执行,但是在64位上就没有结果,那个大神帮忙看下
Dim $ID,$SID,$NAME,$ID1,$PID,$MU1,$MU,$XH1,$XH,$ce$objWMIService = ObjGet("winmgmts:\\.\root\wmi")
$colItems = $objWMIService.ExecQuery("SELECT * FROM WmiMonitorID")
For $info In $colItems
$NAME=$Info.Active
For $i = 0 To UBound($Info.SerialNumberID) - 1
$ID = $Info.SerialNumberID($i)
If StringLen($ID)<>0 Then
$SID=$SID&String(Chr($ID))
EndIf
Next
For $i = 0 To UBound($Info.ProductCodeID) - 1
$ID1 = $Info.ProductCodeID($i)
If StringLen($ID1)<>0 Then
$PID=$PID&String(Chr($ID1))
EndIf
Next
For $i = 0 To UBound($Info.ManufacturerName) - 1
$MU1 = $Info.ManufacturerName($i)
If StringLen($MU1)<>0 Then
$MU=$MU&String(Chr($MU1))
EndIf
Next
For $i = 0 To UBound($Info.UserFriendlyName) - 1
$XH1 = $Info.UserFriendlyName($i)
If StringLen($XH1)<>0 Then
$XH=$XH&String(Chr($XH1))
EndIf
Next
Next
MsgBox(1,"","序列号:"&$SID&"显示器ID:"&$MU&$PID&"显示器型号:"&$XH)
MsgBox(1,"",$NAME)
;UserFriendlyName,
;class WmiMonitorID : MSMonitorClass
;{;
; boolean Active;
;stringInstanceName;
;uint16ManufacturerName[]; 生产厂家
;uint16ManufacturerNameLength;
;uint16ProductCodeID[]; 显示器ID
;uint32SerialNumberID[]; 显示器序号
;uint8 WeekOfManufacture;生产周
;uint16YearOfManufacture; 生产年
;uint16UserFriendlyName; 显示器型号
;uint16UserFriendlyNameLength;
;}; WIN7_64 可以的啊: 额。。。我纠结了,我的32位是没有问题的,64就是没有。。。。哎。。。神马情况。。。你用的是VGA线,还是DVI线。。 那位亲是xp的,帮忙测试下。。。
WINXP_SP3环境测试结果 感谢了。不知道这个是什么情况。。。wmi服务也开启了。。。。 怪了 怎么我的出来了呢?
难道我中毒啦? 在程式前面請加入 語法#RequireAdmin #RequireAdmin 加这个的效果是不是 win7 以管理员身份运行一个道理呢???求解。。。 回复 10# liuxuchun1985
是結論 是 可以解決問題嗎?? 不能解决。。我估计可能是系统无法设别到显示器,所以不显示,xp不显示通过微软的ScriptomaticV2.hta这个软件可以发现xp中没有这个WmiMonitorID类。还有就是使用VGA先和DVI线,也会导致设别问题。。。不知道还有什么办法可以用于设别显示器。。。。。
页:
[1]