钢琴家刷屏器
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 }