My studying notes for Java,Ruby,Ajax and other any interesting things.

星期四, 七月 16, 2009

[fwd]如何用autohotkey获取选中的文件名

最近想用 AutoHotkey 实现:对选定的文件使用不同的快捷键可以用不同的程序打开。首先就面临一个问题,就是如何获取选定的文件的信息。在我想象中,可能会有"GetSelectedFilename"这样的函数,查了查帮助没找到。下面给出两种方法来实现这个想法。
 
  有一种实现是用"ControlGet"获取窗口的某些信息,例子如下:
 
#z::
 ControlGet, FileList, List, Selected Col1, SysListView321, A
 MsgBox %FileList%
return
 
  这种方法的缺点就是只对 Windows 资源管理器有效,TC中就不能这样获取了。而且获取的文件名称是不含有路径的。想要获得完整路径就要想别的办法,比如获取地址栏的信息等等。
 
  第二种是用Ctrl+C复制,对于文件来说,内建变量转换成文本格式就是文件的路径。例子如下:
 
#v::
 send ^c
 SelectedFile = %clipboard%
 Run gvim.exe %SelectedFile%
return
 
  这种方法适用范围比较广泛,在 TC 中也能用。但是可能会覆盖掉剪贴板,有必要的话可以把剪贴板的内容暂存以下,然后再存回去。

2 条评论:

yi chen 说...

TotalCommander中可以使用usercmd.ini中的命令功能,将ahk文件设置为命令,而TotalCommander提供了很多内置参数可以传递给命令(包括选中文件名)。

skyloper 说...

@yi chen, 你说得对,但是要考虑到不同的文件管理器还是要考虑通用性的,我现在也基本上只用
ctrl+1,2,3来分别获取文件路径,文件名,文件路径+文件名。
C+1=cm_CopySrcPathToClip
C+2=cm_CopyNamesToClip
C+3=cm_CopyFullnamesToClip