1 #NoEnv
2 SetBatchLines -1
3 ListLines Off
4
5 ;强制以ANSI版本管理员权限运行
6 runwith("admin")
7
8 IniRead, con, myfile.ini, Count, count
9 IniRead, pl1, myfile.ini, Time, key_time
10 ; MsgBox, %con%
11
12 Gui Add, Text, x10 y20 w60 h20, 问候语
13 Gui Add, Text, x80 y5 w60 h20, F1 刷战地5
14 Gui Add, Text, x80 y20 w60 h20, F2 刷LOL
15 Gui Add, Text, x10 y120 w60 h20, 间隔时间
16 Gui Add, Edit, x10 y40 w210 r5 vMyEdit_text
17 ; Gui Add, Edit, x30 y135 w60 h20
18 ; Gui Add, UpDown, vMyEdit_pl Range150-1000, %pl1%
19 Gui, Add, Slider,x10 y140 w200 h20 vSliderpl gSliderpl range150-30000 AltSubmit Line150 TickInterval1000, %pl1%
20 Gui Add, Button, x155 y167 w65 h20, 保存
21 Gui Add, Button, x155 y15 w65 h20, 增加
22 Gui, Add, Radio, x10 y170 vMyRadioGroup Checked, 单句循环
23 Gui, Add, Radio, x85 y170 vMyRadioGroup1, 逐行循环
24 Gui, Add, ListView, x10 y200 r20 w210 h160 Grid NoSortHdr -Hdr NoSort -Multi vlistview1 gMyListView, 详细信息
25 Loop %con%{
26 IniRead, text2, myfile.ini, Text, key_text%A_Index%
27 LV_Add("", text2)
28 ; MsgBox, %text2%
29 }
30 LV_Modify(1, "Select")
31
32 Menu, Tray, NoStandard
33 Menu, Tray, Add, 重启, reload
34 Menu, Tray, Add, 暂停, Pause
35 Menu, Tray, Add, 退出, OnExit
36
37 ; GuiControl,, MyEdit_text, %text1%
38
39 Gui, Add, StatusBar
40 SB_SetParts(20, 100, 110)
41 SB_SetIcon("Shell32.dll", 16)
42 SB_SetText("状态: 等待操作", 2)
43 i := 0
44 SB_SetText("保存计数: " i, 3)
45
46 Gui Show, x1000 y150 w230 h400, 游戏刷屏器by CXR
47 Return
48
49
50 MyListView:
51 if (A_GuiEvent = "DoubleClick")
52 {
53 cont := LV_GetCount(Selected)
54 LV_Delete(cont)
55 IniDelete, myfile.ini, Text, key_text%cont%
56 IniWrite, % LV_GetCount(), myfile.ini, Count, count
57 }
58 return
59
60 Sliderpl:
61 Gui, Submit, NoHide
62 UpdateToolTip(Sliderpl)
63 ; GuiControl,,Position, % arduino_send(ServoSlider)
64 return
65
66 UpdateToolTip(val){
67 SetFormat, Integer, DEC
68 val += 0
69 ToolTip % val
70 SetTimer, tooltip_close, -500
71 }
72
73 tooltip_close:
74 ToolTip
75 return
76
77 Button增加:
78 Gui, Submit, NoHide
79 LV_Add("", MyEdit_text)
80 GuiControl,, MyEdit_text
81 Return
82
83 Button保存:
84 Gui, Submit, NoHide
85 ; GuiControlGet, text ,, MyEdit_text
86 ; GuiControlGet, pl ,, Sliderpl
87 Loop % LV_GetCount() ;LV_GetCount() 是Listview中具有条目的行数,循环次数
88 {
89 LV_GetText(Site, A_Index) ;利用循环,获取每一行第一列数据。
90 ; MsgBox, %Site%
91 IniWrite, %Site%, myfile.ini, Text, key_text%A_Index%
92 }
93 IniWrite, % LV_GetCount(), myfile.ini, Count, count
94 IniWrite, %Sliderpl%, myfile.ini, Time, key_time
95 text1 := text
96 pl1 := pl
97 i += 1
98 SB_SetText("操作计数: " i, 3)
99 SB_SetText("状态: 保存成功", 2)
100 ToolTip, 保存成功
101 Sleep 3000
102 ToolTip
103 SB_SetText("状态: 等待操作", 2)
104 return
105
106 F1::toggle := !toggle
107 F1 Up::Settimer KaiGuan, % toggle=0 ? "Off" : pl1
108 KaiGuan:
109 Send {enter}
110 Sleep 150
111 SendInput %text1%
112 Sleep 150
113 Send {enter}
114 return
115
116 F2::toggle1 := !toggle1
117 F2 Up::Settimer KaiGuan1, % toggle1=0 ? "Off" : pl1
118 KaiGuan1:
119 Gui, Submit, NoHide
120 If (MyRadioGroup){
121 LV_GetText(select, LV_GetNext(Focused))
122 ; MsgBox, %pl1%
123 ; MsgBox, %select%
124 if WinExist("ahk_class RiotWindowClass"){
125 WinActivate
126 ; Sleep pl1
127 Send {enter}
128 Sleep 20
129 SendInput {text}%select%
130 Sleep 170
131 Send {enter}
132 Return
133 }
134 }
135 If (MyRadioGroup1){
136 Loop % LV_GetCount() ;LV_GetCount() 是Listview中具有条目的行数,循环次数
137 {
138 LV_GetText(Site, A_Index) ;利用循环,获取每一行第一列数据。
139 ;MsgBox, %Site%
140 ; IniWrite, %Site%, myfile.ini, Text, key_text%A_Index%
141 if WinExist("ahk_class RiotWindowClass"){
142 WinActivate
143 ; Sleep pl1
144 Send {enter}
145 Sleep 20
146 SendInput {text}%Site%
147 Sleep 170
148 Send {enter}
149 }
150 }
151 }
152 return
153
154 F3::
155 Pause
156 Return
157
158 ~Space::
159 While GetKeyState("Space","P") {
160 ;SendInput ``
161 SendInput z
162 Sleep 200
163 SendInput x
164 Sleep 200
165 }
166 ; SendInput {`` Up}
167 Return
168
169 ~$a::
170 SendInput, c
171 SendInput, {c down}
172 return
173 ; F3::
174 ; if (onoff := !onoff){
175 ; if WinExist("ahk_class RiotWindowClass"){
176 ; WinActivate
177 ; Send {enter}
178 ; Sleep pl1
179 ; SendInput {text}`%i:
180 ; Sleep pl1
181 ; Send {enter}
182 ; Return
183 ; }
184 ; }
185 ; else{
186 ; if WinExist("ahk_class RiotWindowClass"){
187 ; WinActivate
188 ; Send {enter}
189 ; Sleep pl1
190 ; SendInput {text}`%
191 ; Sleep pl1
192 ; Send {enter}
193 ; Return
194 ; }
195 ; }
196 ; Return
197
198 ; F4::toggle3 := !toggle3
199 ; F4 Up::Settimer KaiGuan3, % toggle3=0 ? "Off" : 50
200 ; KaiGuan3:
201 ; if WinExist("ahk_class RiotWindowClass"){
202 ; WinActivate
203 ; Send {enter}
204 ; Sleep pl1
205 ; SendInput {text}`%
206 ; SendInput {text}%text1%
207 ; SendInput {text}`%i:
208 ; Sleep pl1
209 ; Send {enter}
210 ; }
211 ; return
212
213 reload:
214 reload
215 return
216
217 OnExit:
218 ExitApp
219 return
220
221 Pause:
222 Pause
223 return
224
225 GuiClose:
226 ExitApp
227
228 ;强制改权限
229 RunWith(RunAsAdmin:="Default", ANSI_U32_U64:="Default")
230 {
231 ; 格式化预期的模式
232 switch, RunAsAdmin
233 {
234 case "Normal","Standard","No","0": RunAsAdmin:=0
235 case "Admin","Yes","1": RunAsAdmin:=1
236 case "Default": RunAsAdmin:=A_IsAdmin
237 default: RunAsAdmin:=A_IsAdmin
238 }
239 switch, ANSI_U32_U64
240 {
241 case "A32","ANSI","A": ANSI_U32_U64:="AutoHotkeyA32.exe"
242 case "U32","X32","32": ANSI_U32_U64:="AutoHotkeyU32.exe"
243 case "U64","X64","64": ANSI_U32_U64:="AutoHotkeyU64.exe"
244 case "Default": ANSI_U32_U64:="AutoHotkey.exe"
245 default: ANSI_U32_U64:="AutoHotkey.exe"
246 }
247 ; 获取传递给 “.ahk” 的用户参数(不是 /restart 之类传递给 “.exe” 的开关参数)
248 for k, v in A_Args
249 {
250 if (RunAsAdmin=1)
251 {
252 ; 转义所有的引号与转义符号
253 v:=StrReplace(v, "\", "\\")
254 v:=StrReplace(v, """", "\""")
255 ; 无论参数中是否有空格,都给参数两边加上引号
256 ; Run 的内引号是 "
257 ScriptParameters .= (ScriptParameters="") ? """" v """" : A_Space """" v """"
258 }
259 else
260 {
261 ; 转义所有的引号与转义符号
262 ; 注意要转义两次 Run 和 RunAs.exe
263 v:=StrReplace(v, "\", "\\")
264 v:=StrReplace(v, """", "\""")
265 v:=StrReplace(v, "\", "\\")
266 v:=StrReplace(v, """", "\""")
267 ; 无论参数中是否有空格,都给参数两边加上引号
268 ; RunAs.exe 的内引号是 \"
269 ScriptParameters .= (ScriptParameters="") ? "\""" v "\""" : A_Space "\""" v "\"""
270 }
271 }
272 ; 判断当前 exe 是什么版本
273 if (!A_IsUnicode)
274 RunningEXE:="AutoHotkeyA32.exe"
275 else if (A_PtrSize=4)
276 RunningEXE:="AutoHotkeyU32.exe"
277 else if (A_PtrSize=8)
278 RunningEXE:="AutoHotkeyU64.exe"
279 ; 运行模式与预期相同,则直接返回。 ANSI_U32_U64="AutoHotkey.exe" 代表不对 ahk 版本做要求。
280 if (A_IsAdmin=RunAsAdmin and (ANSI_U32_U64="AutoHotkey.exe" or ANSI_U32_U64=RunningEXE))
281 return
282 ; 如果当前已经是使用 /restart 参数重启的进程,则报错避免反复重启导致死循环。
283 else if (RegExMatch(DllCall("GetCommandLine", "str"), " /restart(?!\S)"))
284 {
285 预期权限:=(RunAsAdmin=1) ? "管理员权限" : "普通权限"
286 当前权限:=(A_IsAdmin=1) ? "管理员权限" : "普通权限"
287 ErrorMessage=
288 (LTrim
289 预期使用: %ANSI_U32_U64%
290 当前使用: %RunningEXE%
291 预期权限: %预期权限%
292 当前权限: %当前权限%
293 程序即将退出。
294 )
295 MsgBox 0x40030, 运行状态与预期不一致, %ErrorMessage%
296 ExitApp
297 }
298 else
299 {
300 ; 获取 AutoHotkey.exe 的路径
301 SplitPath, A_AhkPath, , Dir
302 if (RunAsAdmin=0)
303 {
304 ; 强制普通权限运行
305 switch, A_IsCompiled
306 {
307 ; %A_ScriptFullPath% 必须加引号,否则含空格的路径会被截断。%ScriptParameters% 必须不加引号,因为构造时已经加了。
308 ; 工作目录不用单独指定,默认使用 A_WorkingDir 。
309 case, "1": Run, RunAs.exe /trustlevel:0x20000 "\"%A_ScriptFullPath%\" /restart %ScriptParameters%",, Hide
310 default: Run, RunAs.exe /trustlevel:0x20000 "\"%Dir%\%ANSI_U32_U64%\" /restart \"%A_ScriptFullPath%\" %ScriptParameters%",, Hide
311 }
312 }
313 else
314 {
315 ; 强制管理员权限运行
316 switch, A_IsCompiled
317 {
318 ; %A_ScriptFullPath% 必须加引号,否则含空格的路径会被截断。%ScriptParameters% 必须不加引号,因为构造时已经加了。
319 ; 工作目录不用单独指定,默认使用 A_WorkingDir 。
320 case, "1": Run, *RunAs "%A_ScriptFullPath%" /restart %ScriptParameters%
321 default: Run, *RunAs "%Dir%\%ANSI_U32_U64%" /restart "%A_ScriptFullPath%" %ScriptParameters%
322 }
323 }
324 ExitApp
325 }
326 }
327 ;后台静默运行cmd命令缓存文本取值
328 cmdSilenceReturn(command){
329 CMDReturn:=""
330 cmdFN:="RunAnyCtrlCMD"
331 try{
332 RunWait,% ComSpec " /C " command " > ""%Temp%\" cmdFN ".log""",, Hide
333 FileRead, CMDReturn, %A_Temp%\%cmdFN%.log
334 FileDelete,%A_Temp%\%cmdFN%.log
335 }catch{}
336 return CMDReturn
337 }