我想使用数字快速浏览一些常用文件夹仅在Windows资源管理器处于活动状态时;在其他程序中使用这些键是不变的。 This thread提供符合我需要的代码,但如果没有资源管理器窗口处于活动状态,它将使用Run
,我已在下面的代码中删除了该代码:
#e::Run Explorer D:\Download
1::NavRun("D:\Download")
3::NavRun("E:\Setups")
4::NavRun("E:\Music")
8::NavRun("D:\")
9::NavRun("E:\")
0::NavRun("F:\")
; http://msdn.microsoft.com/en-us/library/bb774094
GetActiveExplorer() {
static objShell := ComObjCreate("Shell.Application")
WinHWND := WinActive("A") ; Active window
for Item in objShell.Windows
if (Item.HWND = WinHWND)
return Item ; Return active window object
return -1 ; No explorer windows match active window
}
NavRun(Path) {
if (-1 != objIE := GetActiveExplorer())
objIE.Navigate(Path)
}
但是,我不能在任何其他程序中使用脚本中列出的数字。怎么能再次使用呢?
答案 0 :(得分:1)
试试这个:
在资源管理器中按住键超过0.3秒以导航到目录。
#UseHook
#If WinActive("ahk_class CabinetWClass") || WinActive("ahk_class ExploreWClass") ; explorer
1::
2::
3::
4::
KeyWait, %A_ThisHotkey%, T0.3
if (ErrorLevel)
long_press := true
else
Send, %A_ThisHotkey%
return
#If (long_press)
1 Up::
2 Up::
3 Up::
4 Up::
long_press := false
If (A_PriorHotKey = "1")
NavRun("C:\")
If (A_PriorHotKey = "2")
NavRun("D:\")
If (A_PriorHotKey = "3")
NavRun("E:\")
return
#If
; http://msdn.microsoft.com/en-us/library/bb774094
GetActiveExplorer() {
static objShell := ComObjCreate("Shell.Application")
WinHWND := WinActive("A") ; Active window
for Item in objShell.Windows
if (Item.HWND = WinHWND)
return Item ; Return active window object
return -1 ; No explorer windows match active window
}
NavRun(Path) {
if (-1 != objIE := GetActiveExplorer())
objIE.Navigate(Path)
else
Run, % Path
}
这样,如果要在资源管理器中键入文本,则可以正常方式使用这些键。