找回密码
 加入
搜索
查看: 1301|回复: 12

[网络通信] 怎么获取显示器的型号【已解决】

[复制链接]
发表于 2021-11-26 00:38:56 | 显示全部楼层 |阅读模式
本帖最后由 qw5838132 于 2021-11-26 15:36 编辑

找了几遍论坛都找不到相应的帖子,要不就是显示不出来显示器型号,只能显示分辨率之类的。麻烦大神指点指点,感谢~
发表于 2021-11-26 09:48:10 | 显示全部楼层
你这是提问···还是展示····
 楼主| 发表于 2021-11-26 09:50:29 | 显示全部楼层
rockkey 发表于 2021-11-26 09:48
你这是提问···还是展示····

提问,有没有函数能显示显示器型号的,要做个资产管理软件
发表于 2021-11-26 10:05:27 | 显示全部楼层
qw5838132 发表于 2021-11-26 09:50
提问,有没有函数能显示显示器型号的,要做个资产管理软件

提问还要付钱才能浏览?
 楼主| 发表于 2021-11-26 10:16:09 | 显示全部楼层
chzj589 发表于 2021-11-26 10:05
提问还要付钱才能浏览?

不好意思,搞错了,我是想付费让人帮忙回答的,已经改了
发表于 2021-11-26 12:02:38 | 显示全部楼层
WMI 试过吗
Local $oItems = ObjGet('winmgmts:\\.\root\cimv2').ExecQuery('SELECT * FROM Win32_DesktopMonitor')
For $Info In $oItems
        Exit MsgBox(0, '', $Info.PNPDeviceID)
Next
 楼主| 发表于 2021-11-26 14:01:32 | 显示全部楼层

试过了,查看过你以前的代码,获取到的是  DISPLAY\DELA1C4\5&14CFF2D7&0&UID4354  实际我的显示器型号是dell p2422h   
发表于 2021-11-26 14:12:28 | 显示全部楼层
qw5838132 发表于 2021-11-26 14:01
试过了,查看过你以前的代码,获取到的是  DISPLAY\DELA1C4\5&14CFF2D7&0&UID4354  实际我的显示器型号是 ...

你应该把你试过的代码贴出来,就不会耽误别人的时间了。
 楼主| 发表于 2021-11-26 14:30:46 | 显示全部楼层
afan 发表于 2021-11-26 14:12
你应该把你试过的代码贴出来,就不会耽误别人的时间了。

#include <Array.au3>

_ArrayDisplay(XsqInfo(), '显示器信息')

Func XsqInfo()
        ;调用WMI查看显示器信息。为获得详实信息请确定已安装过显示器驱动。
        ;(Afan--http://www.autoitx.com/?fromuid=7644923)
        Local $xsInfo[19] = [18]
        $objWMIService = ObjGet("winmgmts:\\.\root\cimv2")
        $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_DesktopMonitor")
        For $Info In $colItems
                $xsInfo[1] = $Info.Availability
                $xsInfo[2] = $Info.Caption
                $xsInfo[3] = $Info.ConfigManagerErrorCode
                $xsInfo[4] = $Info.ConfigManagerUserConfig
                $xsInfo[5] = $Info.CreationClassName
                $xsInfo[6] = $Info.Description
                $xsInfo[7] = $Info.DeviceID
                $xsInfo[8] = $Info.MonitorManufacturer
                $xsInfo[9] = $Info.MonitorType
                $xsInfo[10] = $Info.Name
                $xsInfo[11] = $Info.PixelsPerXLogicalInch
                $xsInfo[12] = $Info.PixelsPerYLogicalInch
                $xsInfo[13] = $Info.PNPDeviceID
                $xsInfo[14] = $Info.ScreenHeight
                $xsInfo[15] = $Info.ScreenWidth
                $xsInfo[16] = $Info.Status
                $xsInfo[17] = $Info.SystemCreationClassName
                $xsInfo[18] = $Info.SystemName
                Return $xsInfo
        Next
EndFunc   ;==>XsqInfo


这个就是我找到你之前的代码,就是没有显示显示器型号的

发表于 2021-11-26 14:38:50 | 显示全部楼层
qw5838132 发表于 2021-11-26 14:30
#include

_ArrayDisplay(XsqInfo(), '显示器信息')

一般注册表都有,你可以用 p2422h 搜索位置
 楼主| 发表于 2021-11-26 15:35:46 | 显示全部楼层
afan 发表于 2021-11-26 14:38
一般注册表都有,你可以用 p2422h 搜索位置

确实可以,谢谢你
 楼主| 发表于 2021-11-28 00:51:17 | 显示全部楼层
把代码贴出来,给有需要的人
#include <MsgBoxConstants.au3>
#include <String.au3>

If StringInStr(@OSArch, '64') Then
   $sREG = 'HKLM64\SYSTEM\CurrentControlSet\Enum\DISPLAY'
Else
   $sREG = 'HKLM\SYSTEM\CurrentControlSet\Enum\DISPLAY'
EndIf
Local $i = 1, $sKEY = -1
Do
        $sKEY = RegEnumKey($sREG, $i)
        $i += 1
        $path = $sREG & '\' & $sKEY
        if StringInStr($path,'Default_Monitor') Then

        Else
                $sKEY1 = RegEnumKey($path, 1)
                $path1 = $path & '\' & $sKEY1
                $path2 = $path1&'\'&'Device Parameters'
                $data5 = RegRead($path2, "EDID")
                If $data5 <>'' Then
                        $sString = StringMid($data5, 193, 22)
                        $sString = _HexToString($sString)
                        MsgBox($MB_SYSTEMMODAL, "12345", $sString)
                EndIf
        EndIf
Until $sKEY == ''
 楼主| 发表于 2021-11-28 00:51:47 | 显示全部楼层
把代码贴出来,给有需要的人
#include <MsgBoxConstants.au3>
#include <String.au3>

If StringInStr(@OSArch, '64') Then
   $sREG = 'HKLM64\SYSTEM\CurrentControlSet\Enum\DISPLAY'
Else
   $sREG = 'HKLM\SYSTEM\CurrentControlSet\Enum\DISPLAY'
EndIf
Local $i = 1, $sKEY = -1
Do
        $sKEY = RegEnumKey($sREG, $i)
        $i += 1
        $path = $sREG & '\' & $sKEY
        if StringInStr($path,'Default_Monitor') Then

        Else
                $sKEY1 = RegEnumKey($path, 1)
                $path1 = $path & '\' & $sKEY1
                $path2 = $path1&'\'&'Device Parameters'
                $data5 = RegRead($path2, "EDID")
                If $data5 <>'' Then
                        $sString = StringMid($data5, 193, 22)
                        $sString = _HexToString($sString)
                        MsgBox($MB_SYSTEMMODAL, "12345", $sString)
                EndIf
        EndIf
Until $sKEY == ''
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-28 08:20 , Processed in 0.076727 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表