liuxuchun1985 发表于 2012-9-25 18:32:36

以下这个代码在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;
;};

魔导 发表于 2012-9-25 18:45:49

WIN7_64   可以的啊:

liuxuchun1985 发表于 2012-9-25 20:48:28

额。。。我纠结了,我的32位是没有问题的,64就是没有。。。。哎。。。神马情况。。。你用的是VGA线,还是DVI线。。

liuxuchun1985 发表于 2012-9-25 21:05:51

那位亲是xp的,帮忙测试下。。。

lpxx 发表于 2012-9-25 23:11:20


WINXP_SP3环境测试结果

liuxuchun1985 发表于 2012-9-25 23:51:11

感谢了。不知道这个是什么情况。。。wmi服务也开启了。。。。

魔导 发表于 2012-9-26 00:00:35

怪了    怎么我的出来了呢?
难道我中毒啦?

kk_lee69 发表于 2012-9-26 09:23:10

在程式前面請加入 語法#RequireAdmin

liuxuchun1985 发表于 2012-9-26 10:35:27

#RequireAdmin 加这个的效果是不是 win7 以管理员身份运行一个道理呢???求解。。。

kk_lee69 发表于 2012-9-26 10:39:47

回复 10# liuxuchun1985

是結論 是 可以解決問題嗎??

liuxuchun1985 发表于 2012-9-26 13:14:11

不能解决。。我估计可能是系统无法设别到显示器,所以不显示,xp不显示通过微软的ScriptomaticV2.hta这个软件可以发现xp中没有这个WmiMonitorID类。还有就是使用VGA先和DVI线,也会导致设别问题。。。不知道还有什么办法可以用于设别显示器。。。。。
页: [1]
查看完整版本: 以下这个代码在win32位上可以执行,但是在64位上就没有结果,那个大神帮忙看下