找回密码
 加入
搜索
查看: 3896|回复: 9

[网络通信] 【请教】 如何实现_GUIImageList_AddIcon读取注册表里面数值的ICO路径呢?【解决】

[复制链接]
发表于 2011-11-25 02:47:43 | 显示全部楼层 |阅读模式
本帖最后由 einiter 于 2011-12-21 15:06 编辑

#include <Constants.au3>
#include <GUIConstantsEx.au3>
#include <ACN_NET.au3>
#include <GuiIPAddress.au3>
#include <File.au3>
#include <EditConstants.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
#include <WinAPIEx.au3>
#include <GuiMonthCal.au3>
#include <Process.au3>
#include <inet.au3>
#include <ListviewConstants.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>


Local $valuekey, $valuename, $valuepath, $i, $k, $u, $KEYPATH, $NAMEPATK, $valuekey1, $valuepath1, $softico
Local $exStyles = BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES)
$CHECKS = GUICreate("软件检测", 661, 434, 209, 178)
GUISetIcon("C:\Windows\System32\user32.dll", -6)
$Find = GUICtrlCreateButton("搜索", 128, 24, 99, 25)
$ListView1 = _GUICtrlListView_Create($Find, "", 16, 72, 625, 297, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER, $LVS_REPORT))
;_GUICtrlListView_SetExtendedListViewStyle($ListView1, $exStyles)
$ListView1 = GUICtrlCreateListView("", 16, 72, 625, 297)
_GUICtrlListView_AddColumn($ListView1, "软件", 200)
_GUICtrlListView_AddColumn($ListView1, "软件", 200)
_GUICtrlListView_AddColumn($ListView1, "软件", 200)

$progressCheck = GUICtrlCreateProgress(16, 392, 633, 25)
$ExitCheck = GUICtrlCreateButton("退出", 408, 24, 99, 25)

GUISetState(@SW_SHOW)


#endregion ### END Koda GUI section ###
$KEYPATH = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
$KEYNAME = "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Find
                        ;For $i = 1 To 100
                        While 1
                                _SHOW()
                                If $valuekey == "" Then ExitLoop
                        WEnd
                        ;Next
                Case $ExitCheck
                        ExitLoop
                        
        EndSwitch
WEnd
Func _SHOW()
        $i += 1
        $valuekey = RegEnumKey($KEYPATH, $i)
        $valuekey1 = RegEnumKey($KEYNAME, $i)
        $valuepath = RegRead($KEYPATH & $valuekey, "DisplayName")
        $valuepath1 = RegRead($KEYNAME & $valuekey1, "DisplayName")
        $softico = RegRead($KEYPATH & $valuekey, "DisplayIcon")
        If $valuepath == "" Then
                _table($valuekey, $valuekey1, $softico)
        Else
                _table($valuepath, $valuepath1, $softico)
        EndIf
        Local $hImage = _GUIImageList_Create(32,32,5,2)
        _GUIImageList_AddIcon($hImage,$softico,-1,True)
        GUICtrlCreateIcon($softico,-1,1,1)
        _GUICtrlListView_SetImageList($ListView1, $hImage,1)
EndFunc   ;==>_SHOW

Func _table($NAME, $uname, $softico)
               

        _GUICtrlListView_AddItem($ListView1, $NAME, 0)
        ;_GUICtrlListView_AddItem($ListView1, $uname, 1)
EndFunc   ;==>_table
Func AddIcon($hWnd, $sFile, $iIndex = 0)
    Local $pIcon, $tIcon, $hIcon

    $tIcon = DllStructCreate("int Icon")
    $pIcon = DllStructGetPtr($tIcon)
    _WinAPI_ExtractIconEx($sFile, $iIndex, 0, $pIcon, 1)
    $hIcon = DllStructGetData($tIcon, "Icon")
    _GUIImageList_ReplaceIcon($hWnd, -1, $hIcon)
    _WinAPI_DestroyIcon($hIcon)
EndFunc   ;==>AddIcon
 楼主| 发表于 2011-11-25 02:49:08 | 显示全部楼层
汗!!果然没有用!! 怎么发放那些高量文本的啊!!!
 楼主| 发表于 2011-11-25 02:51:47 | 显示全部楼层
晚上果然没有人呢!! 唉睡觉去!等明天得到回复把!5555555555555555555555
 楼主| 发表于 2011-11-25 13:15:17 | 显示全部楼层
我等到花儿都谢了!!!
          我用GUICtrlCreateIcon($softico,-1,1,1)就可以读取到ICO图标也能显示!但是用 _GUIImageList_AddIcon($hImage,$softico,-1,True) 就不能读取了!为什么呢!
 楼主| 发表于 2011-11-25 13:16:48 | 显示全部楼层
#include <Constants.au3>
#include <GUIConstantsEx.au3>
#include <ACN_NET.au3>
#include <GuiIPAddress.au3>
#include <File.au3>
#include <EditConstants.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
#include <WinAPIEx.au3>
#include <GuiMonthCal.au3>
#include <Process.au3>
#include <inet.au3>
#include <ListviewConstants.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>


Local $valuekey, $valuename, $valuepath, $i, $k, $u, $KEYPATH, $NAMEPATK, $valuekey1, $valuepath1, $softico
Local $exStyles = BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES)
$CHECKS = GUICreate("软件检测", 661, 434, 209, 178)
GUISetIcon("C:\Windows\System32\user32.dll", -6)
$Find = GUICtrlCreateButton("搜索", 128, 24, 99, 25)
$ListView1 = _GUICtrlListView_Create($Find, "", 16, 72, 625, 297, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER, $LVS_REPORT))
;_GUICtrlListView_SetExtendedListViewStyle($ListView1, $exStyles)
$ListView1 = GUICtrlCreateListView("", 16, 72, 625, 297)
_GUICtrlListView_AddColumn($ListView1, "软件", 200)
_GUICtrlListView_AddColumn($ListView1, "软件", 200)
_GUICtrlListView_AddColumn($ListView1, "软件", 200)

$progressCheck = GUICtrlCreateProgress(16, 392, 633, 25)
$ExitCheck = GUICtrlCreateButton("退出", 408, 24, 99, 25)

GUISetState(@SW_SHOW)


#endregion ### END Koda GUI section ###
$KEYPATH = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
$KEYNAME = "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Find
                        ;For $i = 1 To 100
                        While 1
                                _SHOW()
                                If $valuekey == "" Then ExitLoop
                        WEnd
                        ;Next
                Case $ExitCheck
                        ExitLoop

        EndSwitch
WEnd
Func _SHOW()
        $i += 1
        $valuekey = RegEnumKey($KEYPATH, $i)
        $valuekey1 = RegEnumKey($KEYNAME, $i)
        $valuepath = RegRead($KEYPATH & $valuekey, "DisplayName")
        $valuepath1 = RegRead($KEYNAME & $valuekey1, "DisplayName")
        $softico = RegRead($KEYPATH & $valuekey, "DisplayIcon")
        If $valuepath == "" Then
                _table($valuekey, $valuekey1, $softico)
        Else
                _table($valuepath, $valuepath1, $softico)
        EndIf
        Local $hImage = _GUIImageList_Create(32, 32, 5, 2)
        _GUIImageList_AddIcon($hImage, $softico, -1, True)
        GUICtrlCreateIcon($softico, -1, 1, 1)
        _GUICtrlListView_SetImageList($ListView1, $hImage, 1)
EndFunc   ;==>_SHOW

Func _table($NAME, $uname, $softico)


        _GUICtrlListView_AddItem($ListView1, $NAME, 0)
        ;_GUICtrlListView_AddItem($ListView1, $uname, 1)
EndFunc   ;==>_table
Func AddIcon($hWnd, $sFile, $iIndex = 0)
        Local $pIcon, $tIcon, $hIcon

        $tIcon = DllStructCreate("int Icon")
        $pIcon = DllStructGetPtr($tIcon)
        _WinAPI_ExtractIconEx($sFile, $iIndex, 0, $pIcon, 1)
        $hIcon = DllStructGetData($tIcon, "Icon")
        _GUIImageList_ReplaceIcon($hWnd, -1, $hIcon)
        _WinAPI_DestroyIcon($hIcon)
EndFunc   ;==>AddIcon
发表于 2011-11-25 13:49:35 | 显示全部楼层
 楼主| 发表于 2011-11-25 14:54:39 | 显示全部楼层
a 版能不能直接教教我啊!!5555我是新手来着!!!!貌似我这里用GUICtrlCreateIcon能够读取的到!
 楼主| 发表于 2011-11-25 16:08:50 | 显示全部楼层
汗!!我再研究一会吧。!!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-10-1 05:41 , Processed in 0.083078 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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