从下面的URL中,获得了这个Library.
Get paths of selected items in an explorer window
/* http://www.autohotkey.com/board/topic/60985-get-paths-of-selected-items-in-an-explorer-window/ Library for getting info from a specific explorer window (if window handle not specified, the currently active window will be used). Requires AHK_L or similar. Works with the desktop. Does not currently work with save dialogs and such. Explorer_GetSelected(hwnd="") - paths of target window‘s selected items Explorer_GetAll(hwnd="") - paths of all items in the target window‘s folder Explorer_GetPath(hwnd="") - path of target window‘s folder example: F1:: path := Explorer_GetPath() all := Explorer_GetAll() sel := Explorer_GetSelected() MsgBox % path MsgBox % all MsgBox % sel return Joshua A. Kinnison 2011-04-27, 16:12 */ Explorer_GetPath(hwnd="") { if !(window := Explorer_GetWindow(hwnd)) return ErrorLevel := "ERROR" if (window="desktop") return A_Desktop path := window.LocationURL path := RegExReplace(path, "ftp://.*@","ftp://") StringReplace, path, path, file:/// StringReplace, path, path, /, \, All ; thanks to polyethene Loop If RegExMatch(path, "i)(?<=%)[\da-f]{1,2}", hex) StringReplace, path, path, `%%hex%, % Chr("0x" . hex), All Else Break return path } Explorer_GetAll(hwnd="") { return Explorer_Get(hwnd) } Explorer_GetSelected(hwnd="") { return Explorer_Get(hwnd,true) } Explorer_GetWindow(hwnd="") { ; thanks to jethrow for some pointers here WinGet, process, processName, % "ahk_id" hwnd := hwnd? hwnd:WinExist("A") WinGetClass class, ahk_id %hwnd% if (process!="explorer.exe") return if (class ~= "(Cabinet|Explore)WClass") { for window in ComObjCreate("Shell.Application").Windows if (window.hwnd==hwnd) return window } else if (class ~= "Progman|WorkerW") return "desktop" ; desktop found } Explorer_Get(hwnd="",selection=false) { if !(window := Explorer_GetWindow(hwnd)) return ErrorLevel := "ERROR" if (window="desktop") { ControlGet, hwWindow, HWND,, SysListView321, ahk_class Progman if !hwWindow ; #D mode ControlGet, hwWindow, HWND,, SysListView321, A ControlGet, files, List, % ( selection ? "Selected":"") "Col1",,ahk_id %hwWindow% base := SubStr(A_Desktop,0,1)=="\" ? SubStr(A_Desktop,1,-1) : A_Desktop Loop, Parse, files, `n, `r { path := base "\" A_LoopField IfExist %path% ; ignore special icons like Computer (at least for now) ret .= path "`n" } } else { if selection collection := window.document.SelectedItems else collection := window.document.Folder.Items for item in collection ret .= item.path "`n" } return Trim(ret,"`n") }
转载自:http://wjason.iteye.com/blog/1955712
时间: 2024-12-06 18:30:29