; AutoHotkey代码测试助手

 

; AutoHotkey代码测试助手

 

  1. ;
  2. ;
  3. ; AutoHotkey代码测试助手
  4. ; 2024.10.04
  5. ;
  6. ; 用法:
  7. ; 1步:复制需要测试的AutoHotkey脚本代码片段到此脚本的第50行尖括号段落分隔行内
  8. ; (最常测试的是窗口和控件的识别和操作)
  9. ; 2步:双击运行此脚本
  10. ; 3步:按快捷键F4测试此脚本中的代码片段并观察测试结果
  11. ; 4步:按快捷键F5结束此脚本
  12. ; 5步:在SciTE4AutoHotkey代码编辑器中按快捷键F5可以再次运行此脚本进行代码测试
  13. ; 由于选中的代码通常只有一行或者几行,
  14. ; 测试代码很少具有针对性,
  15. ; 不易混淆,提高了测试效果和效率.
  16. ;
  17. ; 专注于测试一行或者少量的几行代码更容易测试成功并且得到正确的代码语句
  18. ;
  19. ; 源代码下载网址:
  20. ; https://gitee.com/ds920/CodeTestHelper
  21. ; https://www.cnblogs.com/delphixx/p/15806255.html
  22. ;
  23. ; 设置环境变量
  24. #SingleInstance,force
  25. #Persistent
  26. #NoEnv
  27. #WinActivateForce
  28. ;~ #NoTrayIcon
  29. ;~ #Warn
  30. SetWorkingDir,%A_ScriptDir%
  31. DetectHiddenWindows,On
  32. SetTitleMatchMode,2
  33. ;
  34. ; 设置变量
  35. global SciTE_Path
  36. SciTE_Path:="D:\Program\AutoHotkey\SciTE"
  37. global TestAHK_Name
  38. global TestAHK_FullPath
  39. ;
  40. ; 创建热键
  41. Hotkey,F4,HotkeyF4
  42. Hotkey,F5,HotkeyF5
  43. MsgBox,0,,按F4测试代码片段-按F5退出此脚本,2
  44. ;
  45. return
  46. ;
  47. HotkeyF4()
  48. {
  49. ; 请把需要测试的AutoHotkey代码片段复制到此脚本的第50行尖括号段落分隔行内
  50. ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  51. ; Run,C:\Users\Administrator\AppData\Local\Feishu\Feishu.exe
  52. ; WinWait, 飞书 ahk_class Chrome_WidgetWin_1 ahk_exe Feishu.exe
  53. WinActivate,ahk_exe Feishu.exe
  54. ; WinActivate,飞书 ahk_class Chrome_WidgetWin_1 ahk_exe Feishu.exe
  55. ; WinActivate,飞书
  56. ; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  57. }
  58. ;
  59. HotkeyF5()
  60. {
  61. ExitApp
  62. }
  63. ;
  64. RemoveToolTip:
  65. ToolTip
  66. return
  67. ;
  68. ; MsgBox,Msg123
  69. ;
  70. ; 我会在空余时间用微软的 Visual Studio 2015 简体中文版中的 C++ 语言
  71. ; 简体中文汉化版 Embarcadero.Delphi.11.0.v28.0.42600.6491.Lite.v17.0 中的Pascal 语言
  72. ; 重新制作,重构,优化,测试,改进,分享,发布此"代码测试工具"
  73. ;
  74. ; 使得此"代码测试工具"能够辅助 AutoHotkey,AutoIT,
  75. ; C++(Visual Studio 2015 简体中文版),Pascal(Embarcadero.Delphi.11.0简体中文汉化版),
  76. ; Python,JAVA C# 的代码编程制作开发科学研究测试部署.
  77. ; 常见的窗口PSY嗅探检测工具有:
  78. ; 001-星雨朝霞的AHKInfo 1.3.5
  79. ; 002-FindText()8.6- 屏幕抓字生成字库工具与找字函数——FeiYue
  80. ; 003-ViewWinzard 2.63
  81. ; 004-WindowSpy
  82. ; 005-AHK_Window_Info
  83. ; 006-Spy++
  84. ; 007-MacroCreator
  85. ; 008-AU3Record
  86. ; 009-AutoScriptWrite
  87. ; 010-PuloversMacroCreator
  88. /*
  89. ; 我常用的SetTimer循环操作代码结构
  90. ; ----- 1 -----
  91. #SingleInstance,Ignore
  92. #Persistent
  93. runwith("admin")
  94. loop,5
  95. {
  96. DetectHiddenWindows,On
  97. Sleep,5
  98. IfWinExist,7z-E-Mail-595076941@QQ.COM
  99. ExitApp
  100. }
  101. Gui, Show, Hide,7z-E-Mail-595076941@QQ.COM
  102. DetectHiddenWindows,On
  103. SetTitleMatchMode,2
  104. ; 启动7z安装程序
  105. SetTimer,SetupTimer,500
  106. return
  107. SetupTimer()
  108. {
  109. ; 1、如果程序没有运行则运行程序
  110. Process,Exist,7z2106.exe
  111. if (%ErrorLevel%=0)
  112. {
  113. IfExist,%A_ScriptDir%\7z2106.exe
  114. {
  115. Run,%A_ScriptDir%\7z2106.exe
  116. }
  117. else
  118. {
  119. MsgBox,找不到文件 %A_ScriptDir%\7z2106.exe
  120. return
  121. }
  122. }
  123. ControlSend, Button2,{Space}, 7-Zip 21.06 Setup ahk_class #32770 ahk_exe 7z2106.exe, Cancel
  124. Sleep,2000
  125. IfWinExist,7-Zip,installed
  126. {
  127. SetTimer,SetupTimer,Delete
  128. ControlSend, Button2,{Space}, 7-Zip 21.06 Setup ahk_class #32770 ahk_exe 7z2106.exe, Cancel
  129. MsgBox,,,已成功安装7-Zip软件,2
  130. ExitApp
  131. }
  132. }
  133. ; 非常感谢 RunWith() 函数作者 空
  134. ; 这个 RunWith() 函数解决了我的一大难题
  135. ; https://www.autoahk.com/archives/35533
  136. ; 强制自身进程以 管理员权限 或 普通权限 或 ANSI 或 U32 或 U64 版本运行。
  137. ; 例1: runwith("admin","u32") 强制自身以 u32 + 管理员权限 运行。
  138. ; 例2: runwith("","ansi") 强制自身以 ansi 版本运行(权限不变)。
  139. ; 例3: runwith("normal") 强制自身以 普通权限 运行(版本不变)。
  140. RunWith(RunAsAdmin:="Default", ANSI_U32_U64:="Default")
  141. {
  142. ; 格式化预期的模式
  143. switch, RunAsAdmin
  144. {
  145. case "Normal","Standard","No","0": RunAsAdmin:=0
  146. case "Admin","Yes","1": RunAsAdmin:=1
  147. case "Default": RunAsAdmin:=A_IsAdmin
  148. default: RunAsAdmin:=A_IsAdmin
  149. }
  150. switch, ANSI_U32_U64
  151. {
  152. case "A32","ANSI","A": ANSI_U32_U64:="AutoHotkeyA32.exe"
  153. case "U32","X32","32": ANSI_U32_U64:="AutoHotkeyU32.exe"
  154. case "U64","X64","64": ANSI_U32_U64:="AutoHotkeyU64.exe"
  155. case "Default": ANSI_U32_U64:="AutoHotkey.exe"
  156. default: ANSI_U32_U64:="AutoHotkey.exe"
  157. }
  158. ; 获取传递给 “.ahk” 的用户参数(不是 /restart 之类传递给 “.exe” 的开关参数)
  159. for k, v in A_Args
  160. {
  161. if (RunAsAdmin=1)
  162. {
  163. ; 转义所有的引号与转义符号
  164. v:=StrReplace(v, "\", "\\")
  165. v:=StrReplace(v, """", "\""")
  166. ; 无论参数中是否有空格,都给参数两边加上引号
  167. ; Run 的内引号是 "
  168. ScriptParameters .= (ScriptParameters="") ? """" v """" : A_Space """" v """"
  169. }
  170. else
  171. {
  172. ; 转义所有的引号与转义符号
  173. ; 注意要转义两次 Run 和 RunAs.exe
  174. v:=StrReplace(v, "\", "\\")
  175. v:=StrReplace(v, """", "\""")
  176. v:=StrReplace(v, "\", "\\")
  177. v:=StrReplace(v, """", "\""")
  178. ; 无论参数中是否有空格,都给参数两边加上引号
  179. ; RunAs.exe 的内引号是 \"
  180. ScriptParameters .= (ScriptParameters="") ? "\""" v "\""" : A_Space "\""" v "\"""
  181. }
  182. }
  183. ; 判断当前 exe 是什么版本
  184. if (!A_IsUnicode)
  185. RunningEXE:="AutoHotkeyA32.exe"
  186. else if (A_PtrSize=4)
  187. RunningEXE:="AutoHotkeyU32.exe"
  188. else if (A_PtrSize=8)
  189. RunningEXE:="AutoHotkeyU64.exe"
  190. ; 运行模式与预期相同,则直接返回。 ANSI_U32_U64="AutoHotkey.exe" 代表不对 ahk 版本做要求。
  191. if (A_IsAdmin=RunAsAdmin and (ANSI_U32_U64="AutoHotkey.exe" or ANSI_U32_U64=RunningEXE))
  192. return
  193. ; 如果当前已经是使用 /restart 参数重启的进程,则报错避免反复重启导致死循环。
  194. else if (RegExMatch(DllCall("GetCommandLine", "str"), " /restart(?!\S)"))
  195. {
  196. 预期权限:=(RunAsAdmin=1) ? "管理员权限" : "普通权限"
  197. 当前权限:=(A_IsAdmin=1) ? "管理员权限" : "普通权限"
  198. ErrorMessage=
  199. (LTrim
  200. 预期使用: %ANSI_U32_U64%
  201. 当前使用: %RunningEXE%
  202. 预期权限: %预期权限%
  203. 当前权限: %当前权限%
  204. 程序即将退出。
  205. )
  206. MsgBox 0x40030, 运行状态与预期不一致, %ErrorMessage%
  207. ExitApp
  208. }
  209. else
  210. {
  211. ; 获取 AutoHotkey.exe 的路径
  212. SplitPath, A_AhkPath, , Dir
  213. if (RunAsAdmin=0)
  214. {
  215. ; 强制普通权限运行
  216. switch, A_IsCompiled
  217. {
  218. ; %A_ScriptFullPath% 必须加引号,否则含空格的路径会被截断。%ScriptParameters% 必须不加引号,因为构造时已经加了。
  219. ; 工作目录不用单独指定,默认使用 A_WorkingDir 。
  220. case, "1": Run, RunAs.exe /trustlevel:0x20000 "\"%A_ScriptFullPath%\" /restart %ScriptParameters%",, Hide
  221. default: Run, RunAs.exe /trustlevel:0x20000 "\"%Dir%\%ANSI_U32_U64%\" /restart \"%A_ScriptFullPath%\" %ScriptParameters%",, Hide
  222. }
  223. }
  224. else
  225. {
  226. ; 强制管理员权限运行
  227. switch, A_IsCompiled
  228. {
  229. ; %A_ScriptFullPath% 必须加引号,否则含空格的路径会被截断。%ScriptParameters% 必须不加引号,因为构造时已经加了。
  230. ; 工作目录不用单独指定,默认使用 A_WorkingDir 。
  231. case, "1": Run, *RunAs "%A_ScriptFullPath%" /restart %ScriptParameters%
  232. default: Run, *RunAs "%Dir%\%ANSI_U32_U64%" /restart "%A_ScriptFullPath%" %ScriptParameters%
  233. }
  234. }
  235. ExitApp
  236. }
  237. }
  238. ; -----2-----
  239. #SingleInstance,Ignore
  240. loop,5
  241. {
  242. DetectHiddenWindows,On
  243. Sleep,5
  244. IfWinExist,E-Mail-595076941@QQ.COM
  245. ExitApp
  246. }
  247. Gui, Show, Hide,E-Mail-595076941@QQ.COM
  248. #Persistent
  249. ; #NoTrayIcon
  250. DetectHiddenWindows,On
  251. SetTitleMatchMode,2
  252. ; 启动7z安装程序
  253. SetTimer,SetupTimer,500
  254. return
  255. SetupTimer()
  256. {
  257. ; 1、如果程序没有运行则运行程序
  258. Process,Exist,Delphi7_Lite_Full_Edition_Setup_7.3.4.3_Build_20110801.exe
  259. if (%ErrorLevel%=0)
  260. {
  261. IfExist,%A_ScriptDir%\Delphi7_Lite_Full_Edition_Setup_7.3.4.3_Build_20110801.exe
  262. {
  263. Run,%A_ScriptDir%\Delphi7_Lite_Full_Edition_Setup_7.3.4.3_Build_20110801.exe
  264. }
  265. else
  266. {
  267. MsgBox,找不到文件 %A_ScriptDir%\Delphi7_Lite_Full_Edition_Setup_7.3.4.3_Build_20110801.exe
  268. return
  269. }
  270. }
  271. IfWinNotExist,安装向导 - Delphi 7 Lite Full Edition,正在你的计算机中安装 Delphi 7 Lite Full Edition,请稍等...
  272. {
  273. ControlSend, TNewButton1,{Space}, 选择安装语言 ahk_class TSelectLanguageForm ahk_exe Delphi7_Lite_Full_Edition_Setup_7.3.4.3_Build_20110801.tmp, 取消
  274. ControlSend, Button1,{Space}, 安装向导 ahk_class #32770 ahk_exe Delphi7_Lite_Full_Edition_Setup_7.3.4.3_Build_20110801.tmp, 本程序为Window
  275. ControlSend, TNewButton1,!n, 安装向导 - Delphi 7 Lite Full Edition ahk_class TWizardForm ahk_exe Delphi7_Lite_Full_Edition_Setup_7.3.4.3_Build_20110801.tmp, 取消
  276. ControlSend, TNewButton1,!i, 安装向导 - Delphi 7 Lite Full Edition ahk_class TWizardForm ahk_exe Delphi7_Lite_Full_Edition_Setup_7.3.4.3_Build_20110801.tmp, 取消
  277. }
  278. IfWinExist,安装向导 - Delphi 7 Lite Full Edition ahk_class TWizardForm,安装向导已完成 Delphi 7 Lite Full Edition 的安装
  279. {
  280. SetTimer,SetupTimer,Delete
  281. ControlClick, TNewButton5, 安装向导 - Delphi 7 Lite Full Edition ahk_class TWizardForm ahk_exe Delphi7_Lite_Full_Edition_Setup_7.3.4.3_Build_20110801.tmp,安装向导已完成 Delphi 7 Lite Full Edition 的安装
  282. MsgBox,,,已成功安装Delphi7Lite编程软件,2
  283. ExitApp
  284. }
  285. }
  286. ; ----- End -----
  287. */
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
其他函数应用

; 酷我音乐在下载音乐文件一段时间后速度会变成零

2024-10-4 14:33:37

其他应用教程案例

文件管理参考方案 2024.09.08

2024-10-12 8:24:12

0 条回复 A文章作者 M管理员
欢迎您,新朋友,感谢参与互动!
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
私信列表
搜索