forked from Drugoy/Autohotkey-scripts-.ahk
-
Notifications
You must be signed in to change notification settings - Fork 0
/
AltTab Fingertips.ahk
262 lines (224 loc) · 6.27 KB
/
AltTab Fingertips.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
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
; http://justice.dcmembers.com/pages/home/alttab-fingertips.php
; http://justice.dcmembers.com/media/downloads/AltTab%20Fingertips.zip
; http://www.donationcoder.com/forum/index.php?topic=10629.0
; AltTabFingertips by justice
; Thanks to ak_ for FileDraft from which I borrow the "menu at cursor" idea
; general configuration
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
DetectHiddenWindows, Off
#SingleInstance,Force
SetWinDelay,0
Dir = %A_WorkingDir%
IniFile = settings.ini
FileCreateDir, %Dir%
SetWorkingDir, %Dir%
version = 1.3
ismenu=0;
; setting variables
ExclusionList =
AltTabFingertipsHK = F10
AltTabFingertipsEnabled =
this_windowcycle =
Processes =
IDs =
Titles =
maxItems =
showingdesktop = 0
; main
Gosub,READINI
;Gosub,RegisterAutoUpdate
Gosub,SetHotKeys
GoSub, PrettyHotkeys
Traytip,AltTabFingertips, %AltTabFingertipsHKmsg%`t Switch between active apps.
Gosub,IndexWindows
OnExit, QUIT
GoSub, Standby
IndexWindows:
Processes =
IDs =
Titles =
maxItems =
myArray =
i=
; acquire a list of processes to work with
WinGet, id, list,,, Program Manager ; get list of all foreground ids
Loop, %id%
{
this_id := id%A_Index%
WinGet, this_process, ProcessName, ahk_id %this_id%
if NOT this_process ;exclude emptiness
continue
WinGetTitle, this_title, ahk_id %this_id%
if NOT this_title ;exclude start menu and empty processes
continue
if this_title = MtMouseGlobalHook ;exclude some kind of hook
continue
StringGetPos, pos, ExclusionList, %this_process%
i +=1
IfWinExist, %this_title%
{
Processes%i% := this_process
Titles%i% := this_title
IDs%i% := this_id
}
}
id =
maxItems := i
GoSub, TRAYMENU
return
PrettyHotkeys:
; Translate hotkey modifiers to proper English
StringReplace, AltTabFingertipsHKmsg, AltTabFingertipsHK, +, Shift-, All
StringReplace, AltTabFingertipsHKmsg, AltTabFingertipsHKmsg, #, Win-, All
StringReplace, AltTabFingertipsHKmsg, AltTabFingertipsHKmsg, !, Alt-, All
StringReplace, AltTabFingertipsHKmsg, AltTabFingertipsHKmsg, ^, Control-, All
return
SetHotKeys:
if AltTabFingertipsHK
Hotkey,%AltTabFingertipsHK%,AltTabFingertips, ON
return
CheckUpdate:
; check for updates.
; When no updates are found nothing is displayed.
; make sure the dcuhelper.exe is in a subdirectory of this script's location.
cmdParams = -ri
cmdParams2 = . -show -nothingexit
GoSub, DcUpdateHelper
return
RegisterAutoUpdate:
; Register with DcUpdater.
; When no updates are found nothing is displayed.
; make sure the dcuhelper.exe is in a subdirectory of this script's location.
cmdParams = -r
cmdParams2 = . -shownew -nothingexit
GoSub, DcUpdateHelper
return
DcUpdateHelper:
uniqueID = svd-AltTabFingertips
dcuHelperDir = %A_ScriptDir%\dcuhelper
IfExist, %dcuHelperDir%\dcuhelper.exe
{
OutputDebug, %A_Now%: %dcuHelperDir%\dcuhelper.exe %cmdParams% "%uniqueID%" "%A_ScriptDir%" %cmdParams2%
Run, %dcuHelperDir%\dcuhelper.exe %cmdParams% "%uniqueID%" "%A_ScriptDir%" %cmdParams2%,,Hide
}
return
READINI:
; Read the stored settings
IfNotExist, %IniFile%
GoSub, WRITEINI
IniRead, ExclusionList, %IniFile%, ExclusionList, list, %ExclusionList%
IniRead, ExclusionList, %IniFile%, ExclusionList, list, %ExclusionList%
IniRead, AltTabFingertipsHK, %IniFile%, Hotkeys, AltTabFingertipsHK, %AltTabFingertipsHK%
return
WRITEINI:
; Store settings
IniWrite, %ExclusionList%, %IniFile%, ExclusionList, list
IniWrite, %ExclusionList%, %IniFile%, ExclusionList, list
IniWrite, %AltTabFingertipsHK%, %IniFile%, Hotkeys, AltTabFingertipsHK
return
TRAYMENU:
Menu,Tray,NoStandard
Menu,Tray,DeleteAll
If maxItems ; if windows have been indexed
{
Loop, %maxItems% ; add checkboxes for every window
{
this_process := Processes%A_Index%
Menu, ToggleStatus, add, %this_process%,ToggleStatus
StringGetPos, pos, ExclusionList, %this_process%
if NOT ErrorLevel
Menu, ToggleStatus, Uncheck, %this_process%
else
Menu, ToggleStatus, Check, %this_process%
}
Menu, tray, add, &Include, :ToggleStatus
}
Menu,Tray,Add,
Menu,Tray,Add,AltTabFingertips,AltTabFingertips
Menu,Tray,Add,
; Menu,Tray,Add,&Check for Updates...,CheckUpdate
Menu,Tray,Add,&Preferences,SETTINGS
Menu,Tray,Add,
Menu,Tray,Add,&About,ABOUT
Menu,Tray,Add,&Online Help..,ONLINE
Menu,Tray,Add,
Menu,Tray,Add,&Exit,QUIT
Return
ABOUT:
; make sure the hotkeys are translated
GoSub,PrettyHotkeys
Msgbox, AltTabFingertips %version% by justice <[email protected]>`n`n`t%AltTabFingertipsHKmsg%`t Switch between active apps.`n`nThanks to DonationCoder.com for feedback and testing!
return
ONLINE:
Run,http://blog.amasan.co.uk/search/AltTabFingertips
return
QUIT:
ExitApp
ToggleStatus:
Menu,ToggleStatus,ToggleCheck,%A_ThisMenuItem%
StringGetPos, pos, ExclusionList, %A_ThisMenuItem%
if NOT ErrorLevel ; found
StringReplace, ExclusionList, ExclusionList, %A_ThisMenuItem%`,,,
else
ExclusionList = %ExclusionList%%A_ThisMenuItem%`,
Gosub, WRITEINI
Return
AltTabFingertips:
if ismenu = 1
{
Menu,Fichiers,DeleteAll
ismenu = 0
}
GoSub,IndexWindows
If maxItems ; if windows have been indexed
{
Loop, %maxItems% ; add checkboxes for every window
{
this_title := Titles%A_Index%
WinGet, this_process, ProcessName, %this_title%
StringGetPos, pos, ExclusionList, %this_process%
if ErrorLevel ; not found
{
Menu, Fichiers, Add, %this_title%, LaunchFile
ismenu=1
}
}
}
Menu, Fichiers, Add,
If showingdesktop = 0
Menu, Fichiers, Add, Show Desktop,ShowDesktop
Else
Menu, Fichiers, Add, Restore Programs,ShowDesktop
Menu, Fichiers, Show
return
LaunchFile:
WinActivate, %A_ThisMenuItem%
return
ShowDesktop:
If showingdesktop = 0
showingdesktop = 1
Else
showingdesktop = 0
Send #d
return
SETTINGS:
Hotkey,%AltTabFingertipsHK%,Off
Gui, Destroy
Gui, Add, Text, x12 y12 w100 h23 , AltTabFingertips hotkey:
Gui, Add, Hotkey, x132 y12 w170 h23 vAltTabFingertipsHK , %AltTabFingertipsHK%
Gui, Add, Button, x202 y87 w100 h23 GSETTINGSOK Default,&OK
Gui, Add, Button, x92 y87 w100 h23 GSETTINGSCANCEL,&Cancel
Gui, Show, x127 y87 h120 w320, AltTabFingertips Preferences
Return
GuiClose:
return
SETTINGSOK:
Gui,Submit
GoSub,SetHotKeys
GoSub,WRITEINI
return
SETTINGSCANCEL:
Gui,Destroy
return
Standby: