omegabomb 发表于 2009-8-6 10:56:25

如何调用系统关联图标?

本帖最后由 omegabomb 于 2009-8-11 12:07 编辑

比如一个txt文件,我想读取现在他关联的哪个图标,应该怎么读取?
我并不想在shell32.dll中提取,而是调用现在系统和这个后缀关联的图标,可能安装了一个软件之后,就换了一个图标,那就调用新的图标,这应该如何做到?

afan 发表于 2009-8-6 11:36:39

写了个:While 1
        $a = InputBox("输入后缀名", '请输入要查询图标的后缀名', "", " m", 300, 120)
        If @error = 1 Then Exit
        If StringInStr($a, '.') <> 0 Then $a = StringTrimLeft($a, 1)
        If $a <> '' Then
                $b = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.' & $a, '')
                If $b = '' Then MsgBox(48, '错误', '没有注册此后缀名 ' & '"' & $a & '"')
                If $b <> '' Then ExitLoop
        EndIf
WEnd
$c = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Classes\' & $b & '\DefaultIcon', '')
If $c <> '' Then
        MsgBox(64, '图标路径:', $c)
Else
        MsgBox(48, '图标路径:', '此后缀名不含默认图标')
EndIf

menfan1 发表于 2009-8-6 12:29:03

学习一下。。

omegabomb 发表于 2009-8-6 13:30:03

多谢afan再次解惑,拿回去消化整合一下

omegabomb 发表于 2009-8-6 14:55:45

还是有点不对,图标不对应啊

afan 发表于 2009-8-6 15:20:06

本帖最后由 afan 于 2009-8-6 15:40 编辑

貌似这个id不能同注册表的写法。
如果读取注册表的dll文件图标的id为正数,则写 -(id+1) ,(不加-也行,不过最后一个图标必须加)比如
GUICtrlSetImage(-1,"shimgvw.dll",-(3+1))
如果为负数则去掉‘-’
页: [1]
查看完整版本: 如何调用系统关联图标?