网友表示经常使用:在某对话框里切换到TC或者资源管理器中正在浏览的路径这个功能。
用ahk实现并不难,第一步实现从TC或者资源管理器获取当前浏览的路径。
①从TC获取当前的路径
getTC()
{
ClipSaved := ClipboardAll
clipboard =
SendMessage 1075, 2029, 0, , ahk_class TTOTAL_CMD
ClipWait,2
OutDir=%clipboard%
Clipboard := ClipSaved
ClipSaved =
return OutDir
}
②从资源管理器获取当前路径
getExplorer()
{
Loop,9
{
ControlGetText, folder, ToolbarWindow32%A_Index%, ahk_class CabinetWClass
} until (InStr(folder,"地址"))
folder:=StrReplace(folder,"地址: ","")
if (folder="计算机" )
folder:="c:\"
return folder
}
其实还有更简单的办法:
这样只需WinGetTitle, folder, ahk_class CabinetWClass
PS.长路径可能被截断。
第二步:切换当前对话框的路径为上面获得的。
ChangePath(folder)
{
ControlGetText, w_Edit1Text, Edit1, A
ControlClick, Edit1, A
ControlSetText, Edit1, %folder%, A
ControlSend, Edit1, {Enter}, A
Sleep,100
ControlSetText, Edit1, %w_Edit1Text%, A
}
ahk作为强大的胶水语言,怎么组织热键、怎么调用上面两个功能,soeasy。
/*
作者:sunwind
;2018年8月20日
脚本说明:
在保存/打开对话框中点击菜单项,可以更换对话框到相应路径
#e 将对话框路径切换到资源管理器的路径
#t 将对话框路径切换到TC的路径
环境:Windows10
*/
#Persistent
#SingleInstance, force
;把对话框的路径切换成资源管理器当前浏览的
#e::
ChangePath(getExplorer())
return
;把对话框的路径切换成TC当前浏览的
#t::
ChangePath(gettc())
return