autohotkey显示一个匹配前n个文件的列表菜单,菜单图标为图标文件本身
; 显示一个匹配前n个文件的列表菜单,菜单图标为图标文件本身. pattern = %A_ScriptDir%\* n = 15 ; 为 SHFILEINFOW 结构体申请内存. VarSetCapacity(fileinfo, fisize := A_PtrSize + 688) Loop, Files, %pattern%, FD { ; 为每个文件添加一个菜单项. Menu F, Add, %A_LoopFileName%, donothing ; 获取文件的图标. if DllCall("shell32\SHGetFileInfoW", "wstr", A_LoopFileFullPath , "uint", 0, "ptr", &fileinfo, "uint", fisize, "uint", 0x100) { hicon := NumGet(fileinfo, 0, "ptr") ; 设置菜单项的图标. Menu F, Icon, %A_Index%&, HICON:%hicon% ; 因为我们使用了 ":" 而不是 ":*", 在程序退出或菜单被删除时 ; 这些图标也会被自动释放 } } until A_Index = n Menu F, Show donothing: return