最近想用 AutoHotkey 实现:对选定的文件使用不同的快捷键可以用不同的程序打开。首先就面临一个问题,就是如何获取选定的文件的信息。在我想象中,可能会有"GetSelectedFilename"这样的函数,查了查帮助没找到。下面给出两种方法来实现这个想法。
有一种实现是用"ControlGet"获取窗口的某些信息,例子如下:
#z::
ControlGet, FileList, List, Selected Col1, SysListView321, A
MsgBox %FileList%
return
ControlGet, FileList, List, Selected Col1, SysListView321, A
MsgBox %FileList%
return
这种方法的缺点就是只对 Windows 资源管理器有效,TC中就不能这样获取了。而且获取的文件名称是不含有路径的。想要获得完整路径就要想别的办法,比如获取地址栏的信息等等。
第二种是用Ctrl+C复制,对于文件来说,内建变量转换成文本格式就是文件的路径。例子如下:
#v::
send ^c
SelectedFile = %clipboard%
Run gvim.exe %SelectedFile%
return
send ^c
SelectedFile = %clipboard%
Run gvim.exe %SelectedFile%
return
这种方法适用范围比较广泛,在 TC 中也能用。但是可能会覆盖掉剪贴板,有必要的话可以把剪贴板的内容暂存以下,然后再存回去。
2 条评论:
TotalCommander中可以使用usercmd.ini中的命令功能,将ahk文件设置为命令,而TotalCommander提供了很多内置参数可以传递给命令(包括选中文件名)。
@yi chen, 你说得对,但是要考虑到不同的文件管理器还是要考虑通用性的,我现在也基本上只用
ctrl+1,2,3来分别获取文件路径,文件名,文件路径+文件名。
C+1=cm_CopySrcPathToClip
C+2=cm_CopyNamesToClip
C+3=cm_CopyFullnamesToClip
发表评论