找回密码
 加入
搜索
楼主: redapple2008

[AU3基础] 【已解决】如何将注册表REG_BINARY类型数据转换成字符串格式?

[复制链接]
发表于 2022-7-9 08:24:38 | 显示全部楼层
afan 发表于 2022-7-9 00:08
正则需要从字符串起始匹配,否则可能错位 (?i)^(?:..)*

谢谢指点。
 楼主| 发表于 2022-7-9 10:57:47 | 显示全部楼层
zghwelcome 发表于 2022-7-9 00:01
直接用正则
; $sBin 是读取的注册表二进制数据

谢谢大神,正则解决。但你的正则我没看懂啊,太浮渣了。
 楼主| 发表于 2022-7-9 10:58:09 | 显示全部楼层
afan 发表于 2022-7-8 23:14
那你是获取或截取有问题

大神牛,什么时候才能学到你的水平?
 楼主| 发表于 2022-7-9 10:58:43 | 显示全部楼层

测试没正确运行。
发表于 2022-7-9 14:57:56 | 显示全部楼层
本帖最后由 fybhwsx 于 2022-7-9 15:03 编辑
redapple2008 发表于 2022-7-9 10:58
测试没正确运行。

莫名奇妙,怎么个没正确运行?什么提示都没有?即使你注册表不存在也该返回项或值不存在的提示吧?!

哦哦,我弄错了,你是要转换。我以为要读写,不好意思。。

 楼主| 发表于 2022-7-9 16:34:12 | 显示全部楼层
fybhwsx 发表于 2022-7-9 14:57
莫名奇妙,怎么个没正确运行?什么提示都没有?即使你注册表不存在也该返回项或值不存在的提示吧?!

...

正则解决问题了,谢谢了
发表于 2022-7-9 19:48:29 | 显示全部楼层
解决的莫名其妙!
 楼主| 发表于 2022-7-9 22:06:14 | 显示全部楼层
chishingchan 发表于 2022-7-9 19:48
解决的莫名其妙!

13楼和14楼是解决方法。
发表于 2022-7-14 10:50:18 | 显示全部楼层
这不就是EDID Table
 楼主| 发表于 2022-7-14 14:00:39 | 显示全部楼层

是啊,你有好的方法解决?
发表于 2022-7-14 16:09:43 | 显示全部楼层
redapple2008 发表于 2022-7-14 14:00
是啊,你有好的方法解决?

我觉得一个字节一个字节转换就好了 Chr()
发表于 2022-7-14 16:28:44 | 显示全部楼层
redapple2008 发表于 2022-7-14 14:00
是啊,你有好的方法解决?

要看你抓什么信息, 分辨率还是型号,还是尺寸.
EDID数据有标准的
 楼主| 发表于 2022-7-14 17:05:54 | 显示全部楼层
gapkiller 发表于 2022-7-14 16:28
要看你抓什么信息, 分辨率还是型号,还是尺寸.
EDID数据有标准的

都可以,写个例子出来,谢谢了
发表于 2022-7-15 11:17:03 | 显示全部楼层
本帖最后由 gapkiller 于 2022-7-15 11:26 编辑
redapple2008 发表于 2022-7-14 17:05
都可以,写个例子出来,谢谢了



Local $binEdid = RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\DISPLAY\LEN40A9\4&c0b3f9&0&UID8388688\Device Parameters", "EDID")

$iSizeH = Gb(66) + BitAND(BitShift(Gb(68),4),0xF)*0x100
$iSizeV = Gb(67) + BitAND(BitShift(Gb(68),0),0xF)*0x100

$iPixelX = Gb(56) + BitAND(BitShift(Gb(58),4),0xF)*0x100
$iPixelY = Gb(59) + BitAND(BitShift(Gb(61),4),0xF)*0x100

$sType = BinaryToString(BinaryMid($binEdid,114,15))


MsgBox(64,'Monitor', 'Size:        ' & $iSizeH & ' x ' & $iSizeV & ' (mm)' & @LF & _
                                        'Pixel:        ' & $iPixelX & ' x ' & $iPixelY & @LF & _
                                        'Type:        ' & $sType)

Func Gb($i)
        Return BitAND(BinaryMid($binEdid,$i+1,1),0xFF)
EndFunc

下图是我自己电脑上读出来的.
4&c0b3f9&0&UID8388688这个不是每一个电脑上都一样

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2022-7-15 12:28:40 | 显示全部楼层
gapkiller 发表于 2022-7-15 11:17
下图是我自己电脑上读出来的.
4&c0b3f9&0&UID8388688这个不是每一个电脑上都一样

$KeyPath = "HKLM\SYSTEM\CurrentControlSet\Enum\"
$INDEX = 57
$Computer = "."
$objWMIService = ObjGet("winmgmts:\\.\root\CIMV2")
$colSettings = $objWMIService.ExecQuery("SELECT DeviceID FROM Win32_PnPSignedDriver WHERE DeviceClass = 'MONITOR'")
For $objOperatingSystem In $colSettings
        $tmp = $objOperatingSystem.DeviceID
                ConsoleWrite(@CRLF&$tmp&@CRLF)
        $EDID = RegRead($KeyPath & $tmp & "\Device Parameters", "EDID")
Next
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-27 19:03 , Processed in 0.068853 second(s), 14 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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