-
-
Save Onurtag/166df8b88744c48e93a64b7c89652e0a to your computer and use it in GitHub Desktop.
#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 | |
} | |
} |
@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.
@Onurtag Microsoft Windows [Version 10.0.22621.2428]
.
@kaiwizz Thank you. It looks like this right?
@Onurtag yes.
@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.
@Onurtag Tested your new script today. So Far I have not faced any issues. Thanks a lot.
@kaiwizz Great! Thanks for the bug report and the confirmation.
I'm guessing thats probably the new WinUI 3 explorer. I will take a look at it soon.