Created
June 14, 2019 18:38
-
-
Save burque505/8052613f342d88b67b91f07ff8a4231c to your computer and use it in GitHub Desktop.
Keep a save/open folder consistent across several apps
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
PersistentSaveFolder.ahk | |
Version 1.0.10ex | |
March 28, 2018 | |
burque505 | |
*/ | |
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases. | |
#Persistent | |
SetTitleMatchMode, 2 | |
global saveFolder := "" | |
;This script is to combat the aggravation of each application | |
;not keeping track of your working folder. Say you're working on a | |
;customer's account, and you need to use Excel, Word, Acrobat, and | |
;maybe your email account - who knows. | |
;Each one of these applications is unlikely to know which folder you'd | |
;prefer to jump to in Explorer, or to open from/save in any | |
;#32770 (Open/Save) dialog. And is guaranteed, almost, to hammer it on | |
;the next open, save or jump. Arrgh ... | |
; | |
;The script isn't fancy. There are no settings or bells or whistles. | |
;Customze as you see fit. | |
; | |
;FOR NOW ... | |
;Ctrl-Win-S will set the open/save folder from an open/save dialog or from an open Explorer window. | |
;Ctrl-Win-J will jump to that folder in an open/save dialog or in Explorer | |
;Ctrl-Win-C clears the folder setting. | |
;Ctrl-Win-Q queries the set folder. | |
;Shift+Escape bails. | |
; | |
;You'll probably want to mod the msgbox delays or get rid of the msgboxes | |
;entirely once you get used to the script. | |
; | |
;Only tested so far with Word, Excel, Powerpoint, Acrobat, Explorer, Thunderbird, | |
;Scite4AutoHotkey, Outlook, Notepad, Firefox 57, IE 11, Pale Moon 27 (32-bit) | |
; | |
;Comments and suggestions heartily welcome. | |
;There's lots of room for improvement. | |
;The indentation is inconsistent. | |
; | |
;Regards, burque505 | |
^#j:: | |
;If an Explorer window or an open/save dialog is open, set the jump/save folder | |
If (saveFolder == "" && (WinActive("ahk_class #32770") || WinActive("ahk_class CabinetWClass"))) { | |
msgbox, , , No SAVE/JUMP folder set - defaulting to Documents, 2 | |
saveFolder := "C:\Users\%username%\Documents" | |
} | |
saveHere() | |
return | |
^#s:: | |
setSaveFolder() | |
return | |
^#c:: | |
saveFolder := "" | |
msgbox, , , SAVE/JUMP FOLDER CLEARED!, 1 | |
return | |
^#q:: | |
If (saveFolder == "") | |
{ | |
msgbox, , , No Jump/Save Folder Set!, 2 | |
} | |
else | |
{ | |
msgbox, , , Jump/Save folder is:`n%saveFolder%, 3 | |
} | |
return | |
setSaveFolder() { | |
;Word, Excel or Powerpoint deviations from standard #32770 behavior | |
;Thunderbird is particularly irksome. It is slow, so long delays are necessary. | |
;At least my present machine :) | |
If (WinActive("ahk_class #32770") && WinActive("ahk_exe thunderbird.exe")) | |
{ | |
;More T-bird workarounds, March 28, 2018 | |
If (WinActive("Attach file\(s\) ahk_class #32770") || WinActive("Save Message As ahk_class #32770")) { ;begin interior "If" | |
msgbox in attach or save | |
ControlFocus, DirectUIHWND2, ahk_class #32770 | |
} | |
Else { | |
ControlFocus, Edit2, ahk_class #32770 | |
} | |
sleep, 300 | |
send, !d | |
sleep, 300 | |
ControlGetText, saveFolder, Edit2, ahk_class #32770 | |
sleep, 100 | |
msgbox, , , Open/Save/Attach folder is:`n%saveFolder% in Thunderbird, 2 | |
} | |
Else if WinActive("ahk_class #32770"){ | |
If (WinActive("ahk_exe WINWORD.EXE") || WinActive("ahk_exe EXCEL.EXE") || WinActive("ahk_exe POWERPNT.EXE")) | |
; Annoyingly enough, there are different Edit class numbers for Open and Save As. This section deals with it. | |
{ | |
ControlFocus, DirectUIHWND2, ahk_class #32770 | |
Send, !d | |
If (WinActive("Open ahk_class #32770")) { ; Begin interior "If" | |
ControlGetText, saveFolder, Edit2, ahk_class #32770 | |
} | |
Else { | |
ControlGetText, saveFolder, Edit3, ahk_class #32770 | |
} ; End interior If | |
msgbox, , , Open/Save folder is:`n%saveFolder% in Office Open/Save Dialog, 2 | |
} ; End surrounding "If" | |
else | |
;Acrobat, Notepad, Scite, Outlook, probably lots of others work with this. | |
{ | |
Send, !d | |
Sleep, 100 | |
ControlGetText, saveFolder, Edit2, ahk_class #32770 | |
msgbox, , , Open/Save folder is:`n%saveFolder% in Save, 2 | |
;the delay above (2 seconds) is probably too long. | |
} | |
} | |
else if (WinActive("ahk_class CabinetWClass")) { | |
Send, !d | |
Sleep, 100 | |
ControlGetText, saveFolder, Edit1, ahk_class CabinetWClass | |
msgbox, , , Jump/Save folder is:`n%saveFolder% in Explorer, 2 | |
;the delay above (2 seconds) is probably too long. | |
} | |
else { | |
msgbox, , ,No Explorer - no open or save dialog activated, 1 | |
} | |
} | |
saveHere() { | |
If WinActive("ahk_class #32770") | |
{ | |
Send, !d | |
Sleep, 300 | |
SendInput, {Raw}%saveFolder% | |
Sleep, 100 | |
SendInput, {Enter} | |
} | |
else if WinActive("ahk_class CabinetWClass") | |
{ | |
Send, !d | |
Sleep, 300 | |
ControlSetText, Edit1, %saveFolder%, ahk_class CabinetWClass | |
Sleep, 100 | |
Send, {Enter} | |
} | |
else { | |
msgbox, , ,No Explorer - no open or save dialog activated, 1 | |
} | |
} | |
+Escape::ExitApp |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment