Skip to content

Instantly share code, notes, and snippets.

@Onurtag
Last active February 25, 2024 07:23
Show Gist options
  • Star 32 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
  • Save Onurtag/166df8b88744c48e93a64b7c89652e0a to your computer and use it in GitHub Desktop.
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 ;Comment this line by adding a ; in front of # if you want the tray icon to be visible. Like ;#NoTrayIcon
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.
;Default hotkey is ^F (Ctrl+F). Replace each ^F with F3 if you want to use that hotkey instead.
;You can delete each block below if you don't want its features.
EnvGet, UserProfile, UserProfile
;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::
;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]
RunPath := StrSplit(RunPath, ": ")[2]
;If we are unable to find breadcrumb text, try again using the window title. This helps with detecting Recycle Bin & Home folders.
if (RunPath == "") {
WinGetTitle, windowTitle, A
RunPath := windowTitle
}
;Uncomment below for debugging
; MsgBox, % RunPath
isDirectPath := ":\"
IfNotInString, RunPath, %isDirectPath%
{
if (RunPath == MyThisPC || RunPath == MyHome) ;PC, This PC or Home
{
RunPath := ""
} else if (RunPath == MyRecycleBin) { ;Recycle Bin
RunPath = -s "\$RECYCLE.BIN "
} else {
;Try using the GetExplorerPath method (works on %userprofile%, OneDrive, Pictures, Music, Videos etc.)
myPath := GetActiveExplorerPath()
if (myPath && !InStr(myPath, "::{")) { ;skip ::{GUID} paths (Recycle Bin, This PC etc...)
RunPath = -p "%myPath%"
} else {
if (WinActive("ahk_class #32770")) {
;if the current window is a full file picker try this
if (FileExist(UserProfile . "\" . RunPath)) {
RunPath = -p "%UserProfile%\%RunPath%\"
} else {
RunPath = ""
}
} else {
RunPath = ""
}
}
}
} else {
RunPath = -p "%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
;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() {
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
}
}
@Onurtag
Copy link
Author

Onurtag commented Oct 12, 2023

I'm guessing thats probably the new WinUI 3 explorer. I will take a look at it soon.

@Onurtag
Copy link
Author

Onurtag commented Oct 12, 2023

@kaiwizz Can you tell me your full windows version? It should be at the top when you open a cmd window.
It should be something like Microsoft Windows [Version 10.0.22621.2428] .
I just tested on the version above and everything worked fine (two windows both with multiple tabs). I am asking for the version you are using so I can decide whether I should update to a pre-release insider version.

@kaiwizz
Copy link

kaiwizz commented Oct 12, 2023

@Onurtag Microsoft Windows [Version 10.0.22621.2428].

@Onurtag
Copy link
Author

Onurtag commented Oct 12, 2023

@kaiwizz Thank you. It looks like this right?
image

@kaiwizz
Copy link

kaiwizz commented Oct 12, 2023

@Onurtag yes.

@Onurtag
Copy link
Author

Onurtag commented Oct 12, 2023

@kaiwizz I pushed an update but I'm not sure if this will fix your problem. Download the new version, test it and let me know if you still have problems.

@kaiwizz
Copy link

kaiwizz commented Oct 18, 2023

@Onurtag Tested your new script today. So Far I have not faced any issues. Thanks a lot.

@Onurtag
Copy link
Author

Onurtag commented Oct 18, 2023

@kaiwizz Great! Thanks for the bug report and the confirmation.

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