如何在Windows资源管理器处于活动状态时指定热键来导航文件夹?

时间:2017-06-29 08:30:17

标签: keyboard-shortcuts autohotkey

我想使用数字快速浏览一些常用文件夹仅在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)
}

但是,我不能在任何其他程序中使用脚本中列出的数字。怎么能再次使用呢?

1 个答案:

答案 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
}

这样,如果要在资源管理器中键入文本,则可以正常方式使用这些键。