-
Notifications
You must be signed in to change notification settings - Fork 3
/
AutoHotkey.ahk
163 lines (143 loc) · 4.63 KB
/
AutoHotkey.ahk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
; IMPORTANT INFO ABOUT GETTING STARTED: Lines that start with a
; semicolon, such as this one, are comments. They are not executed.
; This script has a special filename and path because it is automatically
; launched when you run the program directly. Also, any text file whose
; name ends in .ahk is associated with the program, which means that it
; can be launched simply by double-clicking it. You can have as many .ahk
; files as you want, located in any folder. You can also run more than
; one ahk file simultaneously and each will get its own tray icon.
; SAMPLE HOTKEYS: Below are two sample hotkeys. The first is Win+Z and it
; launches a web site in the default browser. The second is Control+Alt+N
; and it launches a new Notepad window (or activates an existing one). To
; try out these hotkeys, run AutoHotkey again, which will load this file.
;#z::Run www.autohotkey.com
;
;^!n::
;IfWinExist Untitled - Notepad
; WinActivate
;else
; Run Notepad
;return
; Note: From now on whenever you run AutoHotkey directly, this script
; will be loaded. So feel free to customize it to suit your needs.
; Please read the QUICK-START TUTORIAL near the top of the help file.
; It explains how to perform common automation tasks such as sending
; keystrokes and mouse clicks. It also explains more about hotkeys.
; help
; keylist: https://autohotkey.com/docs/KeyList.htm
; # win, + shift, ! alt, ^ ctrl
;;;; autohotkey ;;;;
!+a::Reload ; reload
;;;; browsers ;;;;
#c::Run "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
#+c::Run "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --incognito
#x::Run "C:\Program Files\Mozilla Firefox\firefox.exe"
#i::Run C:\Program Files\Internet Explorer\iexplore.exe
;;;; code editors ;;;;
#v::Run "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\devenv.exe"
;#q::Run C:\Program Files\Microsoft SQL Server\90\Tools\Binn\VSShell\Common7\IDE\SqlWb.exe
#s::
sel := Explorer_GetSelected()
sel := RegExReplace(sel, "^", """")
sel := RegExReplace(sel, "$", """")
Run, SciTE %sel%
Return
;;;; files ;;;;
#g::Run SciTE "%HOMEDRIVE%%HOMEPATH%/.gitconfig"
#k::Run SciTE "%HOMEDRIVE%%HOMEPATH%/Documents/AutoHotkey.ahk"
;;;; misc applications ;;;;
#w::Run "c:\Program Files (x86)\Winamp\winamp.exe"
#m::
sel := Explorer_GetSelected()
loopcount = 0
Loop, parse, sel, `n, `r
{
Run, "C:\Program Files\MPC-HC\mpc-hc64.exe" `"%A_LoopField%`"
loopcount++
}
if (loopcount == 0)
{
Run, "C:\Program Files\MPC-HC\mpc-hc64.exe"
}
Return
;#b::Run "C:\Program Files\Git\git-bash.exe", "%homepath%"
#b::Run "C:\Program Files\Git\git-bash.exe"
;;;; laptop ;;;;
PrintScreen::AppsKey
#PrintScreen::PrintScreen
;;;; mouse (sculpt ergo) ;;;;
;WheelLeft::Browser_Back
;WheelRight::Browser_Forward
RWin::Browser_Forward
;;;; helpers ;;;;
; see https://autohotkey.com/board/topic/60985-get-paths-of-selected-items-in-an-explorer-window/
Explorer_GetPath(hwnd="")
{
if !(window := Explorer_GetWindow(hwnd))
return
if (window="desktop")
return A_Desktop
path := window.LocationURL
path := RegExReplace(path, "ftp://.*@","ftp://")
StringReplace, path, path, file:///
StringReplace, path, path, /, \, All
; thanks to polyethene
Loop
If RegExMatch(path, "i)(?<=%)[\da-f]{1,2}", hex)
StringReplace, path, path, `%%hex%, % Chr("0x" . hex), All
Else Break
return path
}
Explorer_GetAll(hwnd="")
{
return Explorer_Get(hwnd)
}
Explorer_GetSelected(hwnd="")
{
return Explorer_Get(hwnd,true)
}
Explorer_GetWindow(hwnd="")
{
; thanks to jethrow for some pointers here
WinGet, process, processName, % "ahk_id" hwnd := hwnd? hwnd:WinExist("A")
WinGetClass class, ahk_id %hwnd%
if (process!="explorer.exe")
return
if (class ~= "(Cabinet|Explore)WClass")
{
for window in ComObjCreate("Shell.Application").Windows
if (window.hwnd==hwnd)
return window
}
else if (class ~= "Progman|WorkerW")
return "desktop" ; desktop found
}
Explorer_Get(hwnd="",selection=false)
{
if !(window := Explorer_GetWindow(hwnd))
return
if (window="desktop")
{
ControlGet, hwWindow, HWND,, SysListView321, ahk_class Progman
if !hwWindow ; #D mode
ControlGet, hwWindow, HWND,, SysListView321, A
ControlGet, files, List, % ( selection ? "Selected":"") "Col1",,ahk_id %hwWindow%
base := SubStr(A_Desktop,0,1)=="\" ? SubStr(A_Desktop,1,-1) : A_Desktop
Loop, Parse, files, `n, `r
{
path := base "\" A_LoopField
IfExist %path% ; ignore special icons like Computer (at least for now)
ret .= path "`n"
}
}
else
{
if selection
collection := window.document.SelectedItems
else
collection := window.document.Folder.Items
for item in collection
ret .= item.path "`n"
}
return Trim(ret,"`n")
}