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

如何根据文件后缀名获取其系统关联的图标

 火... [复制链接]
 楼主| 发表于 2010-2-5 11:48:37 | 显示全部楼层
能用是能用,在gui上创建一个gdi环境
netegg 发表于 2010-2-5 10:33



    不会

发表于 2010-2-5 11:59:31 | 显示全部楼层
回复 31# sanmoking

不好意思,我也不会
发表于 2010-2-5 23:39:51 | 显示全部楼层
额也不会……
_WinAPI_ShellGetFileInfo , DllStructGetData 后返回的 $hIcon 是图标的句柄,不知道用 GUICtrlSendMsg 操作可不可行。
发表于 2010-2-6 14:29:03 | 显示全部楼层
差函数文件啊
发表于 2010-3-8 13:10:56 | 显示全部楼层
发表于 2010-8-9 08:59:03 | 显示全部楼层
运行出错,提示$tSHFILEINFO = _WinAPI_ShellGetFileInfo($Ext, BitOR($SHGFI_ICON, $SHGFI_USEFILEATTRIBUTES))
调用参数错误。
发表于 2010-8-22 14:09:14 | 显示全部楼层
回复 36# jonyzhr

的确。。。
发表于 2010-8-23 17:59:05 | 显示全部楼层
先收了。以后用得到
发表于 2010-8-23 18:08:36 | 显示全部楼层
运行出错,提示$tSHFILEINFO = _WinAPI_ShellGetFileInfo($Ext, BitOR($SHGFI_ICON, $SHGFI_USEFILEATTRIBU ...
jonyzhr 发表于 2010-8-9 08:59

回复  jonyzhr

的确。。。
itljl 发表于 2010-8-22 14:09


比较老的帖子了,_WinAPI_ShellGetFileInfo() 现在的版本参数设置不同,要自行修改~
如果不想修改,就用 35# 提供的原 WinAPIEx.au3
发表于 2011-2-11 21:28:54 | 显示全部楼层
Func _GUIImageList_AddAssociatedIcon($hWnd, $sPath, $fSmall = 0)
   
    Local $Index, $Flags = $SHGFI_ICON, $tInfo = DllStructCreate($tagSHFILEINFO)

    If Not _WinAPI_PathIsDirectory($sPath) Then
        $Flags = BitOR($Flags, $SHGFI_USEFILEATTRIBUTES)
    EndIf
    If $fSmall Then
        $Flags = BitOR($Flags, $SHGFI_SMALLICON)
    EndIf
    _WinAPI_ShellGetFileInfo($sPath, $Flags, 0, $tInfo)
    If @error Then
        Return SetError(1, 0, -1)
    EndIf
    $hIcon = DllStructGetData($tInfo, 'hIcon')
    $Index = _GUIImageList_ReplaceIcon($hWnd, -1, $hIcon)
    _WinAPI_DestroyIcon($hIcon)
    Return $Index
EndFunc   ;==>_GUIImageList_AddAssociatedIcon
发表于 2011-2-17 18:51:11 | 显示全部楼层
学习下,看看先。
发表于 2011-3-10 19:24:01 | 显示全部楼层
为什么运行
#include <GUIListView.au3>

#include <GUIImageList.au3>

#include <WinAPIEx.au3>

#include <WindowsConstants.au3>

#include <File.au3>



Dim $folder = FileSelectFolder('请选择目标文件夹', '', 4, @MyDocumentsDir)

If @error Then Exit (Msgbox(48, '退出', '没有选择文件夹,退出'))

Dim $a = _FileListToArray($folder, '*', 1)

If $a = 0 Then Exit (Msgbox(48, '退出', '没有选择文件夹,退出'))



GUICreate('MyIconGUI', 280, 400)

$ListView = GUICtrlCreateListView('', 10, 10, 260, 344, $LVS_NOCOLUMNHEADER)

_GUICtrlListView_SetView($ListView, 1)

_GUICtrlListView_InsertColumn($ListView, 0, '', 220)

$hImageList = _GUIImageList_Create(32, 32, 6)

_GUICtrlListView_SetImageList($ListView, $hImageList, 0)

$Button = GUICtrlCreateButton('退出', 105, 361, 70, 23)



For $i = 1 To $a[0]

        $Ext = $folder & '\' & $a[$i]

        $tSHFILEINFO = _WinAPI_ShellGetFileInfo($Ext, BitOR($SHGFI_ICON, $SHGFI_USEFILEATTRIBUTES))

        $hIcon = DllStructGetData($tSHFILEINFO, 'hIcon')

        _GUIImageList_ReplaceIcon($hImageList, -1, $hIcon)

        _GUICtrlListView_AddItem($ListView, $a[$i], $i -1)

        _WinAPI_FreeIcon($hIcon)

Next

GUISetState()



While 1

        $Msg = GUIGetMsg()

        Switch $Msg

                Case -3, $Button

                        ExitLoop

        EndSwitch

WEnd
复制代码

出现D:\Program Files\autoit3\Include\WinAPIEx.au3(308,35) : ERROR: $PROCESS_VM_READ previously declared as a 'Const'
Global Const $PROCESS_VM_READ=0x10
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
D:\Program Files\autoit3\Include\WinAPIEx.au3(309,48) : ERROR: $PROCESS_QUERY_INFORMATION previously declared as a 'Const'
Global Const $PROCESS_QUERY_INFORMATION = 0x400
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
D:\Program Files\autoit3\新建 AutoIt v3 脚本.au3 - 2 error(s), 0 warning(s)
($Li
如何解决?
发表于 2011-5-2 14:17:10 | 显示全部楼层
本帖最后由 nerdpal 于 2011-5-2 14:21 编辑
运行出错,提示$tSHFILEINFO = _WinAPI_ShellGetFileInfo($Ext, BitOR($SHGFI_ICON, $SHGFI_USEFILEATTRIBU ...
jonyzhr 发表于 2010-8-9 08:59


#include <WinAPIEx.au3>
Error :函数call里面包含错误的参数

#include "WinAPIEx.au3"
Lin 308 ... WinAPIEx.au3
Global Const $PROCESS_VM_READ=0x10
Global Const ^Error

Error : 不能重新声明一个常量

哪位帮忙解决一下啊,多谢
发表于 2011-5-2 14:26:34 | 显示全部楼层
自己解决了, 在WinAPIEx.au3中注释Lin 308-309

#include "WinAPIEx.au3"

;Global Const $PROCESS_VM_READ=0x10
;Global Const $PROCESS_QUERY_INFORMATION = 0x400
发表于 2011-5-5 13:52:25 | 显示全部楼层
为什么我运行后有错误
_WinAPI_ShellGetFileInfo() 调用参数的数量错误.
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-10 06:39 , Processed in 0.111623 second(s), 12 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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