Skip to content

Instantly share code, notes, and snippets.

@Onurtag
Last active May 21, 2026 17:34
Show Gist options
  • Select an option

  • Save Onurtag/166df8b88744c48e93a64b7c89652e0a to your computer and use it in GitHub Desktop.

Select an option

Save Onurtag/166df8b88744c48e93a64b7c89652e0a to your computer and use it in GitHub Desktop.
ExploreEverything.ahk: An autohotkey (ahk v1) script that allows you to search the current explorer folder, your desktop and more using Everything
#SingleInstance Force
#NoTrayIcon ;If you want the tray icon to be visible; comment this line by adding a semicolon ; in front of the #. Example: ;#NoTrayIcon
; ALTERNATIVE METHOD: Try the built-in Everything option "hotkey_explorer_path_search"
; ^^^INFO: https://www.voidtools.com/forum/viewtopic.php?p=17390#p17390
EverythingPath := "C:\Program Files\Everything\Everything.exe" ;Set this to your everything.exe path. Keep the quotes.
;---Optional setup for special folders---
MyRecycleBin := "Recycle Bin" ;If your OS is not English, go to your explorer's "Recycle Bin" (๐Ÿšฎ) folder and change this to the title of that window. Keep the quotes.
MyThisPC := "This PC" ;If your OS is not English, go to your explorer's "This PC" (๐Ÿ’ป) folder and change this to the title of that window. Keep the quotes.
MyHome := "Home" ;(Windows 11) If your OS is not English, go to your explorer's "Home" (๐Ÿ ) folder and change this to the title of that window. Keep the quotes.
MyFullName := ""
try {
;Get full user name (for file picking dialog)
MyFullName := GetUserFullName()
} catch e {
MyFullName := ""
}
EnvGet, UserProfile, UserProfile
;Default hotkey is ^F (Ctrl+F). Replace each ^F with F3 if you want to use that hotkey instead.
;You may delete each block below if you don't need its features.
;BLOCK 1 - DESKTOPS
#If, WinActive("ahk_class WorkerW") or WinActive("ahk_class Progman")
^F::
RunPath = -p "%UserProfile%\Desktop\"
Run, %EverythingPath% %RunPath%
WinWait, ahk_exe everything.exe,, 2
if (!ErrorLevel) {
Sleep, 125
WinActivate, ahk_exe everything.exe
}
Return
;BLOCK 2 - TASKBARS
#If, WinActive("ahk_class Shell_TrayWnd") or WinActive("ahk_class Shell_SecondaryTrayWnd")
^F::
Run, %EverythingPath%
WinWait, ahk_exe everything.exe,, 2
if (!ErrorLevel) {
Sleep, 125
WinActivate, ahk_exe everything.exe
}
Return
;BLOCK 3 - EXPLORER WINDOWS and FILE PICKING DIALOGS (only for the full file picking dialog)
#If, WinActive("ahk_class CabinetWClass") or WinActive("ahk_class #32770")
^F::
;Try using the GetExplorerPath method (doesn't work on the file picker dialog)
;Doesn't work with Recycle Bin, This PC, Home... (probably more)
RunPath := GetActiveExplorerPath()
if (InStr(RunPath, "::{")) {
;If the function returns a GUID path, retry using the manual method below.
RunPath := ""
} else if (RunPath != "") {
;Finalize commandline
RunPath = -p "%RunPath%"
}
if (RunPath == "") {
;Function method failed OR this is a file picking dialog
;To find the correct control path use an inspector application (UIAViewer, System Informer, Winspector etc..)
;Find Breadcrumb Parent1 -> ToolbarWindow321
ControlGet, crumbHWND, Hwnd,, Breadcrumb Parent1, A
ControlGetText, RunPath, ToolbarWindow321, ahk_id %crumbHWND%
;Cleanup the string (Location: C:\Dir1\Dir2)
;Windows paths can't include the ":" character so we don't need to combine result[2]...result[last]
try {
RunPath := StrSplit(RunPath, ": ")[2]
}
if (RunPath == "") {
;If we are still unable to find breadcrumb text, try again using the window title. This can help us detect some special named folders.
WinGetTitle, windowTitle, A
RunPath := windowTitle
}
if (FileExist(RunPath)) { ;Check if its a regular path
;Finalize commandline
RunPath = -p "%RunPath%"
} else if (FileExist(UserProfile . "\" . RunPath)) { ;Check if its a user folder
RunPath = -p "%UserProfile%\%RunPath%\"
;Check special named paths
} else if (RegExMatch(RunPath, "^" . MyThisPC) || RegExMatch(RunPath, "^" . MyHome)) { ;This PC or Home
RunPath := ""
} else if (RegExMatch(RunPath, "^" . MyRecycleBin)) { ;Recycle Bin
RunPath = -s "\$RECYCLE.BIN "
} else if (MyFullName && RegExMatch(RunPath, "^" . MyFullName)) { ;UserProfile folder (using MyFullName)
RunPath = -p "%UserProfile%"
} else {
;Abort
RunPath = ""
}
}
;Uncomment below for debugging
; MsgBox, %EverythingPath% %RunPath%
Run, %EverythingPath% %RunPath%
WinWait, ahk_exe everything.exe,, 2
if (!ErrorLevel) {
Sleep, 125
WinActivate, ahk_exe everything.exe
}
Return
#If
;FUNCTIONS
GetUserFullName() {
username := A_UserName
; Connect to the WMI service
objWMIService := ComObjGet("winmgmts:{impersonationLevel=impersonate}!" . "\\.\root\cimv2")
; Query the Win32_UserAccount class for the current username
colItems := objWMIService.ExecQuery("SELECT * FROM Win32_UserAccount WHERE Name='" . username . "'")
; Loop through the results to get the FullName
for objItem in colItems {
return objItem.FullName
}
}
;GetActiveExplorerPath by ntepa https://www.autohotkey.com/boards/viewtopic.php?p=507423#p507423
;Works correctly in all situations except for special ::{GUID} folders (Recycle Bin, Home, Gallery)
GetActiveExplorerPath() {
try {
hwnd := WinActive("ahk_class CabinetWClass")
activeTab := 0
try ControlGet, activeTab, Hwnd,, % "ShellTabWindowClass1", % "ahk_id" hwnd
for w in ComObjCreate("Shell.Application").Windows {
if (w.hwnd != hwnd)
continue
if activeTab {
static IID_IShellBrowser := "{000214E2-0000-0000-C000-000000000046}"
shellBrowser := ComObjQuery(w, IID_IShellBrowser, IID_IShellBrowser)
DllCall(NumGet(numGet(shellBrowser+0)+3*A_PtrSize), "Ptr", shellBrowser, "UInt*", thisTab)
if (thisTab != activeTab)
continue
ObjRelease(shellBrowser)
}
return w.Document.Folder.Self.Path
}
} catch e {
;MsgBox,, ExploreEverything Error, % e.Message
;Return blank on failure
return ""
}
}
@NightMean

Copy link
Copy Markdown

As this script is only for Autohotkey v1 and I currently need to use v2, I've asked AI to modify it to be compatible with v2. To my surprise it worked on the first try. There might be bugs that I do not know about but from simple testing it worked as expected.

#Requires AutoHotkey v2.0
#SingleInstance Force
#NoTrayIcon                     ;If you want the tray icon to be visible; comment this line by adding a semicolon ; in front of the #. Example: ;#NoTrayIcon

; ALTERNATIVE METHOD: Try the built-in Everything option "hotkey_explorer_path_search"
; ^^^INFO: https://www.voidtools.com/forum/viewtopic.php?p=17390#p17390

EverythingPath := "C:\Program Files\Everything\Everything.exe"    ;Set this to your everything.exe path. Keep the quotes.

;---Optional setup for special folders---
MyRecycleBin := "Recycle Bin"   ;If your OS is not English, go to your explorer's "Recycle Bin" (๐Ÿšฎ) folder and change this to the title of that window. Keep the quotes.
MyThisPC := "This PC"           ;If your OS is not English, go to your explorer's "This PC" (๐Ÿ’ป) folder and change this to the title of that window. Keep the quotes.
MyHome := "Home"                ;(Windows 11) If your OS is not English, go to your explorer's "Home" (๐Ÿ ) folder and change this to the title of that window. Keep the quotes.

MyFullName := ""
try {
    ;Get full user name (for file picking dialog)
    MyFullName := GetUserFullName()
}

UserProfile := EnvGet("UserProfile")

;Default hotkey is ^f (Ctrl+F). Replace each ^f with F3 if you want to use that hotkey instead.
;You may delete each block below if you don't need its features.

;BLOCK 1 - DESKTOPS
#HotIf WinActive("ahk_class WorkerW") or WinActive("ahk_class Progman")
^f:: {
    RunPath := '-p "' UserProfile '\Desktop\"'
    Run(EverythingPath " " RunPath)
    if WinWait("ahk_exe everything.exe", , 2) {
        Sleep(125)
        WinActivate("ahk_exe everything.exe")
    }
}


;BLOCK 2 - TASKBARS
#HotIf WinActive("ahk_class Shell_TrayWnd") or WinActive("ahk_class Shell_SecondaryTrayWnd")
^f:: {
    Run(EverythingPath)
    if WinWait("ahk_exe everything.exe", , 2) {
        Sleep(125)
        WinActivate("ahk_exe everything.exe")
    }
}


;BLOCK 3 - EXPLORER WINDOWS and FILE PICKING DIALOGS (only for the full file picking dialog)
#HotIf WinActive("ahk_class CabinetWClass") or WinActive("ahk_class #32770")
^f:: {
    ;Try using the GetExplorerPath method (doesn't work on the file picker dialog)
    ;Doesn't work with Recycle Bin, This PC, Home... (probably more)
    RunPath := GetActiveExplorerPath()
    
    if InStr(RunPath, "::{") {
        ;If the function returns a GUID path, retry using the manual method below.
        RunPath := ""
    } else if (RunPath != "") {
        ;Finalize commandline
        RunPath := '-p "' RunPath '"'
    }

    if (RunPath == "") {
        ;Function method failed OR this is a file picking dialog

        ;To find the correct control path use an inspector application (UIAViewer, System Informer, Winspector etc..)
        ;Find Breadcrumb Parent1 -> ToolbarWindow321
        try {
            crumbHWND := ControlGetHwnd("Breadcrumb Parent1", "A")
            RunPath := ControlGetText("ToolbarWindow321", "ahk_id " crumbHWND)
            
            ;Cleanup the string (Location: C:\Dir1\Dir2)
            ;Windows paths can't include the ":" character so we don't need to combine result[2]...result[last]
            parts := StrSplit(RunPath, ": ")
            if parts.Length >= 2 {
                RunPath := parts[2]
            } else {
                RunPath := ""
            }
        } catch {
            RunPath := ""
        }
        
        if (RunPath == "") {
            ;If we are still unable to find breadcrumb text, try again using the window title. This can help us detect some special named folders.
            try RunPath := WinGetTitle("A")
        }
        
        if FileExist(RunPath) { ;Check if its a regular path
            ;Finalize commandline
            RunPath := '-p "' RunPath '"'
        } else if FileExist(UserProfile "\" RunPath) { ;Check if its a user folder
            RunPath := '-p "' UserProfile '\' RunPath '\"'

        ;Check special named paths
        } else if (RegExMatch(RunPath, "^" MyThisPC) || RegExMatch(RunPath, "^" MyHome)) { ;This PC or Home 
            RunPath := ""
        } else if RegExMatch(RunPath, "^" MyRecycleBin) { ;Recycle Bin
            RunPath := '-s "\$RECYCLE.BIN "'
        } else if (MyFullName != "" && RegExMatch(RunPath, "^" MyFullName)) { ;UserProfile folder (using MyFullName)
            RunPath := '-p "' UserProfile '"'
        } else {
            ;Abort
            RunPath := ""
        }
    }

    ;Uncomment below for debugging
    ;MsgBox(EverythingPath " " RunPath)
    Run(EverythingPath " " RunPath)
    if WinWait("ahk_exe everything.exe", , 2) {
        Sleep(125)
        WinActivate("ahk_exe everything.exe")
    }
}
#HotIf

;FUNCTIONS
GetUserFullName() {
    username := A_UserName
    try {
        ; Connect to the WMI service
        objWMIService := ComObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
        ; Query the Win32_UserAccount class for the current username
        colItems := objWMIService.ExecQuery("SELECT * FROM Win32_UserAccount WHERE Name='" username "'")
        ; Loop through the results to get the FullName
        for objItem in colItems {
            return objItem.FullName
        }
    }
    return ""
}

;GetActiveExplorerPath by ntepa (Updated for v2)
;Works correctly in all situations except for special ::{GUID} folders (Recycle Bin, Home, Gallery)
GetActiveExplorerPath() {
    try {
        hwnd := WinActive("ahk_class CabinetWClass")
        if !hwnd
            return ""
            
        activeTab := 0
        try activeTab := ControlGetHwnd("ShellTabWindowClass1", "ahk_id " hwnd)
        
        for w in ComObject("Shell.Application").Windows {
            if (w.hwnd != hwnd)
                continue
            if activeTab {
                static IID_IShellBrowser := "{000214E2-0000-0000-C000-000000000046}"
                shellBrowser := ComObjQuery(w, IID_IShellBrowser, IID_IShellBrowser)
                ComCall(3, shellBrowser, "ptr*", &thisTab := 0)
                if (thisTab != activeTab)
                    continue
            }
            return w.Document.Folder.Self.Path
        }
    }
    return ""
}

@Onurtag

Onurtag commented Mar 14, 2026

Copy link
Copy Markdown
Author

Looks good to me. If your company etc. is forcing ahk 2.0 this should work as well.

@eladkarako

Copy link
Copy Markdown

this is great script, thanks,
I've just used the window.Document.Folder.Self.Path along with small fixes,
and AutoHotKey version 2.0 syntax.

https://gist.github.com/eladkarako/56bc00236b9ee90001bf3ad2e3f3a16a#file-bind_f3_in_explorer_to_launch_everything_search_program_in_a_directory-ahk

(I also forked their documentation to https://eladkarako.github.io/docs_autohotkey_v2/docs/
because the cloudflare bot detection was too annoying)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment