`

AutoHotKey: 从资源管理器中,获取被选择的文件的路径(及文件夹)的API

阅读更多

 

从下面的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")
}

 

 

分享到:
评论

相关推荐

    AHK 拷贝 win 资源管理器选择文件的文件名与路径到剪切板

    标题中的“AHK 拷贝 win 资源管理器选择文件的文件名与路径到剪切板”指的是使用 AutoHotkey (AHK) 这款自动化脚本语言,编写脚本来实现在Windows资源管理器中选中多个文件后,一键将这些文件的完整路径和名称复制到...

    AutoHotKey 帮助文档 AutoHotKey 帮助文档

    AutoHotKey 帮助文档知识点总结 AutoHotKey 是一个功能强大且灵活的自动化工具,旨在帮助用户自动完成各种重复性的任务。下面是 AutoHotKey 帮助文档中所包含的知识点总结: 1. AutoHotkey AutoHotKey 是一个自由...

    AutoHotkey脚本.ahk文件关联工具-解决方案-注册表.zip

    在Windows系统中,.ahk文件是AutoHotkey脚本的扩展名,通常需要通过AutoHotkey解释器来执行。然而,有时用户可能希望将.ahk文件与AutoHotkey程序关联,以便双击这些脚本时能够直接运行。这涉及到文件关联和注册表...

    AutoHotkey_CN_版本_1.1.30.03_AutoHotkey_

    1. **脚本编译**:AutoHotkey 脚本可以被编译成独立的可执行文件,方便分享和运行。 2. **DLL调用**:允许调用Windows API和其他动态链接库,扩展功能边界。 3. **热字符串**:设定特定的前缀,输入后自动扩展为...

    AutoHotkey1.1.30.03中文离线帮助.rar

    AutoHotkey是一款强大的自动化工具...总的来说,“AutoHotkey1.1.30.03中文离线帮助”是学习和探索AutoHotkey的宝贵资源,无论你是初学者还是高级用户,都可以通过这个离线文档快速获取所需信息,提升你的自动化技能。

    AutoHotkey中文帮助文档.7z

    这个压缩包中的主要文件“AutoHotkey_L-Docs”包含了全面的API参考、教程、示例和常见问题解答,旨在帮助用户深入理解并熟练运用AutoHotkey的各项功能。 AutoHotkey的核心概念包括热键(Hotkeys)和热字符串...

    SciTE4Autohotkey

    在 SciTE4Autohotkey 的压缩包中,ReadMe.txt 文件可能包含了编辑器的安装步骤、配置指南、更新日志等内容,对于初次使用者来说非常重要。 2. **SciTE_beta4**: 这个文件可能是 SciTE4Autohotkey 的一个特定版本,...

    AutoHotkey 中文手册

    AutoHotkey 中文手册

    AutoHotkey中文手册

    这是一份AutoHotkey中文版手册。是一本由浅入深教会你使用AutoHotkey的手册。使用AutoHotkey后大大减轻了工作时一些重复操作的难度。如果只是要做一些简单的事件,花一点点时间按照样例上操作即可上手。完整读完这本...

    AutoHotKey

    在AutoHotKey中,你可以自由定义这些热键,以适应个人的工作流程或游戏需求。只需编写简单的脚本,如`::CC::Copy`,就可以将Ctrl + C绑定到复制功能。 AutoHotKey支持一种易于学习的脚本语言,它包含了条件语句、...

    AutoHotkey最新2017帮助文档

    - **基础知识**:包括初学者向导、推荐的文本编辑器(这些编辑器内置了AutoHotkey的支持)、常见问题解答等。 - **脚本编写**:涵盖了命令、变量与表达式、函数、对象等内容。 - **调试工具**:介绍了如何使用Auto...

    AutoHotkey中文参考手册

    **AutoHotkey中文参考手册** 是一份全面介绍AutoHotkey这一强大自动化工具的资源文档,旨在帮助用户理解和掌握如何利用该脚本语言进行系统操作自动化。AutoHotkey是一款开源的、基于Windows平台的宏语言软件,它允许...

    autohotkey中文帮助chm

    autohotkey中文帮助文档chm 翻译过来就是【智能热键】帮助文档

    AutoHotkey.zip

    window AutoHotkey中文版热键下载window AutoHotkey中文版热键下载window AutoHotkey中文版热键下载window AutoHotkey中文版热键下载window AutoHotkey中文版热键下载window AutoHotkey中文版热键下载window AutoHot...

    autohotkey中文说明

    AutoHotkey的另一个亮点是它的脚本编译功能,编写好的脚本可以被编译成独立的可执行文件,这样就可以在没有安装AutoHotkey环境的电脑上运行,极大地增强了便携性和实用性。 总的来说,AutoHotkey中文说明文档是全面...

    录入辅助_AutoHotkey_source_AutoHotkey_

    在AutoHotkey中,我们可以使用`Excel`对象模型来操作Excel文件。这涉及到创建一个Excel实例,打开工作簿,选择工作表,读取单元格的数据,甚至修改内容。例如,以下代码片段展示了如何打开一个Excel文件并读取A1...

    autohotkey绿色中文版

    “DIY改建”在AutoHotkey中意味着用户可以根据自己的需求定制工具。你可以创建自定义的脚本库,针对特定工作场景优化热键和宏,甚至制作出独立的可执行程序,分享给他人使用。 **5. 安装与运行** 下载的压缩包中...

    AutoHotkey中文帮助文档

    AutoHotkey的中文帮助文档,这是我在网上找的,现在传到这。

Global site tag (gtag.js) - Google Analytics