某网页单据打印辅助AutoHotkey脚本-v2.0-2025-04-03
/*
;================= 标题 开始 =================
某网页单据打印辅助AutoHotkey脚本-v2.0-2025-04-03
;================= 标题 结束 =================
*/
/*
;================= 前言 开始 =================
; 某网页单据打印辅助AutoHotkey v1.0脚本,本来打印单据需要用鼠标点击多次,
; 运行此脚本之后只需在输入完毕后按快捷键热键<F4>
; 为了便于寻找快捷键位置,我在F4键的键帽上贴了黄色贴纸
; 可用 AHKInfo 1.3.5 或者 AhkSpy 等窗口信息探测工具来获取鼠标光标的当前位置
; 2025-03-31 MailTo: 595076941@qq.com
; 由于ahk编辑器和许多辅助工具都是在 "AutoHotkey_1.1.37.02_setup.exe" 环境下运行的,
; 这些编辑器和辅助工具转换到适用于V2版本的AutoHotkey环境是一项比较繁琐的工程,
; 并且V1版本可以正常运行并完成日常任务,转换到V2版本也没有特别的好处、效率的提高和性能的提升。
; 所以我不想折腾,不想再转换到V2版本了。估计没有什么特殊情况的话,我不再会学习研究测试和使用 AHK V2 了。
; 由于"【函数】FindText中文版- 屏幕抓字生成字库工具与找字函数"比较复杂,创建和使用脚本麻烦
; 所以我使用 MouseMove、Click和Sleep这3个AHK原生语句来制作此脚本,
; 这3个内置函数语句的优点是性能速度快,效率高,稳定可靠(有时候FindText在不同电脑上会找不到位图),
; 这3个内置函数语句的缺点是环境适应性差,不同显示器,不同显卡,不同电脑,不同分辨率下的全局坐标可能会不同,需要重写代码.
; 这3个内置函数语句的缺点是需要窗口最大化,窗口位置固定,否则有可能点击不到网页中的按钮.
; 我这边网页平台系统只要多次鼠标点击写到1个快捷键热键就可以了,只要能够长期稳定使用就可以了,要求不高.
; 所以我也不想再根据屏幕分辨率 DPI 缩放修正通用全局坐标了,不折腾了,只要一个电脑上能用就好了,
; 并且我这个Windows 10 企业版 LTSC 电脑用Acronis True Image 2021 在USM v5下备份了系统分区,
; 并且正确安装设置了Deep Freeze Standard冰点还原精灵保护电脑第1分区系统分区C盘. MailTo: 595076941@qq.com
; 2025-04-03 彻底重新编写源代码,用FeiYue大师的FindText()函数和Loop循环语句来多次屏幕找图,
; 提高脚本的稳定性和效率,省去了多余的等待时间,本来的sleep是盲目等待, MailTo: 595076941@qq.com
; 现在重写源代码之后,尝试找图循环的时间粒度改小为10毫秒 ( Sleep,10 ),减少了各操作之间的无效等待时间。
; 并且,对于某些可变的找图改成查找固定图片的坐标位置并加入偏移量计算公式来换算到真正的目标位置
; 并且新增了各操作步骤的总目录,从而对各操作一目了然,胸有成竹,对于此脚本的整体调试和各个分支步骤的调试有很大好处。
; 当网页窗口中某个按钮控件无法被点击到时,有可能是因为识别的Text内容错或者Loop循环的时间太短,可以用FindText() “截屏抓图” 并适当增加Loop循环次数
首先根据需求制作出一个能够实现基本功能的初级草稿Beta版AHK脚本;
然后在实际使用过程中不断测试,不断修改代码,不断测试,不断修改代码;
在基本功能的基础上不断优化、增添或者删减各项功能; MailTo: 595076941@qq.com
每次修改代码并测试能用后立即用WinRAR带日期掩码原地压缩修改的源代码文件;
AHK脚本基本完善后可以用WinRAR完整压缩打包整个工程源代码文件夹后复制到各种存储介质,并上传到各大网盘
AHK脚本基本完善后可以复制粘贴到 腾讯文档 金山文档 石墨文档 AutoHotkey中文社区 www.autoahk.com 博客园 https://www.cnblogs.com/delphixx 防止丢失AHK源代码
此脚本的调试步骤如下:
调试第1步:用SciTE4AutoHotkey打开此脚本的源代码
调试第2步:按快捷键 Ctrl + F5 结束此脚本的运行
调试第3步:用/* */或者Ctrl + Q 注释掉无关当前调试主题内容的代码块,有针对性的调试部分代码,防止代码之间互相影响,聚焦专注于当前调试的源代码片段内容
调试第4步:用AHKInfo 1.3.5 或者 AhkSpyCN 或者 AutoScriptWriter II 等工具抓取嗅探检测到各项信息并修改此脚本的源代码
调试第5步:在SciTE4AutoHotkey窗口中按快捷键F5运行此脚本 MailTo: 595076941@qq.com
调试第6步:观察变量查看器窗口的内容并用代码检测或者用肉眼观察运行结果,根据运行结果决定是否需要进行进一步的调试,需要调试时执行 调试第1步
; xx=% "x" 397*A_ScreenDPI//96
; yy=" y" 63*A_ScreenDPI//96
; MouseMove,xx,yy
;;;;;;;点击窗口内指定坐标 【DPI缩放通用坐标修正】
; ControlClick, % "x" 397*A_ScreenDPI//96 " y" 63*A_ScreenDPI//96, D:\APP\F4\F4.ahk * SciTE4AutoHotkey ahk_class SciTEWindow
; FindText 深度教程 v1.2
; https://www.autoahk.com/archives/41636
; https://www.autoahk.com/archives/47248
; https://www.autoahk.com/archives/39249
; https://www.autoahk.com/archives/28493
;================= 前言 结束 =================
*/
; 设置环境变量
#Requires AutoHotkey v1.1.33+ ; 使该脚本仅在 v1.1.33.00 及以后的 v1.* 版本上运行.
Menu, Tray, Icon, %A_ScriptDir%\Icon.ico
; 设置Delay 延时环境变量
; 设置Timeout 超时环境变量
; InputHook.Timeout := Seconds ; 设置超时值(以秒为单位).
; #IfTimeout 10 ; 将 #If 超时设置为 10 ms, 而不是 1000 ms.
#NoEnv ; 不检查空变量是否为环境变量(推荐所有新脚本使用). 在脚本的任意位置指定该指令可以避免脚本检查空变量是否为环境变量
; #Warn ; 禁用可能产生错误的特定状况时的警告
; #NoTrayIcon ; 不显示托盘图标.
SendMode,Input ; SendInput 更快更可靠. 此外, 它们在发送过程中缓冲任何物理键盘或鼠标活动, 这可以防止用户的击键与发送的击键穿插在一起.
SetWorkingDir,%A_ScriptDir% ; 改变脚本的当前工作目录到当前脚本所在目录的绝对路径. 不包含最后的反斜杠(根目录同样如此).
#SingleInstance,Force ; 跳过对话框并自动替换旧实例, 效果类似于 Reload 命令.
#Persistent ; 让脚本持续运行(即直到用户关闭或遇到 ExitApp).
#WinActivateForce ; 跳过温和的方法而直接使用强制的方法激活窗口.
; SetBatchLines, 10ms ; 使脚本每 10 ms 休眠一次.设置脚本的执行速度(影响 CPU 使用率).
; SetControlDelay, 0 ; 在每次控件修改命令后产生尽可能小的延迟.
; SetDefaultMouseSpeed, 0 ; 使鼠标光标瞬间移动. MailTo: 595076941@qq.com
; SetKeyDelay, 0 ; 在通过 Send 或 ControlSend 发送每一个按键后, 产生尽可能小的延迟.
; SetMouseDelay, 0 ; 使每次鼠标移动或点击后发生的延迟尽可能小.
; SetWinDelay, 10 ; 在每次窗口命令后, 有 10 ms 的延迟.
;===========================================
; FindText - 屏幕抓字生成字库工具与找字函数
; https://www.autohotkey.com/boards/viewtopic.php?f=6&t=17834
;
; 脚本作者 : FeiYue
; 最新版本 : 10.0
; 更新时间 : 2024-10-06
;===========================================
; #Include <FindText> ; Lib目录中必须有FindText.ahk
#Include %A_ScriptDir%\FindText.ahk ; 此脚本目录中必须有FindText.ahk
; t1:=A_TickCount, Text:=X:=Y:=""
; Text:=X:=Y:=""
; 设置每次鼠标移动或点击后自动的延时.
SetMouseDelay,0
SetKeyDelay,0
SetControlDelay,0
SetWinDelay,0
; 把 Click, MouseMove, MouseClick 放置在绝对的屏幕坐标上.
CoordMode, Mouse, Screen
; 设置脚本可以 "看见" 隐藏的窗口.
DetectHiddenWindows, On
; 按快捷键 Ctrl + F5 立即退出此脚本
Hotkey,^F5,ExitPrintHMF
Hotkey,F4,PrintHMF
return
ExitPrintHMF()
{
ExitApp
}
PrintHMF()
{
/*
;================= 操作步骤 总目录 开始 =================
; 第1步:点击收费登记窗口中的"提交保存"按钮
; 第2步:点击错误提示对话框中的"确定"按钮 或者 点击成功提示对话框中的"打印预览"按钮
; 第3步:点击打印预览网页窗口中的"打印"按钮
; 第4步:点击打印对话框中的"确定"按钮
; 第5步:点击打印预览网页窗口中的"关闭"按钮
; 第6步:提交保存后的 成功提示对话框中的"取消"按钮
; 第7步:点击"收费方式下拉列表单选框" MailTo: 595076941@qq.com
; 第8步:点击收费登记窗口中收费方式下拉列表单选框选项的"微信"选项
; 第9步:点击收费登记窗口中的位置姓名"搜索"输入框
; 第10步:发送 Ctrl + A 模拟按键动作到 收费登记窗口中的位置姓名"搜索"输入框,
; 全选搜索框中原有的内容,为下一次筛选搜索过滤记录行做好输入准备。
;================= 操作步骤 总目录 结束 =================
*/
; 》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
; 第1步:点击收费登记窗口中的"提交保存"按钮
loop,3
{
Sleep,5
Text:=X:=Y:=""
; "提交保存"按钮
Text:="|<>*178$56.r0Tnzc1yzxrbyzmyTDw0100AjY00rSTSzPtxzwE7bba0S06DzlsFgbDl409AoTDntxyztDo0803NUz7xsQDjqPzVzQ3nvx0zX7qGQyw707yAQnADU"
if (ok:=FindText(X,Y, 1030-150000, 1008-150000, 1030+150000, 1008+150000, 0, 0, Text))
{
; MouseMove,ok[1][1]+ok[1][3]/2,ok[1][2]+ok[1][4]/2
; ok[1].x <==> ok[1][1]+ok[1][3]/2 <==> OutputX(找到图像中心的 X 坐标),
; ok[1].y <==> ok[1][2]+ok[1][4]/2 <==> OutputY(找到图像中心的 Y坐标 ),
; MouseMove,X,Y
; FindText().Click(X, Y, "R")
MouseMove,ok[1].x,ok[1].y
FindText().Click(X,Y, "L")
; 》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
; 第2步:点击错误提示对话框中的"确定"按钮 或者 点击成功提示对话框中的"打印预览"按钮
; 为了处理窗口创建并显示之前的无效点击,为了能够点击成功,所以此处使用了Loop,Sleep,If和Break语句。
; 由于此处无需多个任务同时运行,所以不使用 SetTimer 语句 ,所以此处使用了Loop,Sleep,If和Break语句。
; 由于各个窗口和对话框的创建和显示都有先后顺序所以才用嵌套代码块组织结构。
loop,3
{
Sleep,5
Text:=X:=Y:=""
; 点击错误提示对话框中的"确定"按钮
Text:="|<>*192$60.TzzzzzzzzyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzyTzDzzzzzw03zDzzzzzz9nU0TzzzzzM0jzTzzzzz4YzzzzzzzyI000DzzzzyIYzjzzzzzwIYvjzzzzzzE0nUTzzzzz1YnjzzzzzzNYUjzzzzzzvUC0DzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzTzzzzzzzzyU"
; MsgBox 1
if (ok:=FindText(X,Y, 1030-150000, 1008-150000, 1030+150000, 1008+150000, 0, 0, Text))
{
; MouseMove,ok[1][1]+ok[1][3]/2,ok[1][2]+ok[1][4]/2
; ok[1].x <==> ok[1][1]+ok[1][3]/2 <==> OutputX(找到图像中心的 X 坐标),
; ok[1].y <==> ok[1][2]+ok[1][4]/2 <==> OutputY(找到图像中心的 Y坐标 ),
; MouseMove,X,Y
; FindText().Click(X, Y, "R")
MouseMove,ok[1].x,ok[1].y
FindText().Click(X,Y, "L")
; ##################################################################################################################
; ##################################################################################################################
; ##################################################################################################################
; 》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
; 第6s步:点击"收费方式下拉列表单选框" MailTo: 595076941@qq.com
; 由于下拉列表收费方式下拉列表单选框选项内容有可能会不同变化,
; 所以此处识别单选框前面的固定不变的文字并通过位移加减计算确定目标坐标位置。
loop,5
{
Sleep,5
Text:=X:=Y:=""
; 点击"收费方式下拉列表单选框"
Text:="|<>*190$64.2M0G0300/0090TzU400a04jw4Wzzzzw0GV7zs80080BD4F80U00U0oolzy3z7u00GG0W88A6801tcDzVUkMk0AXXkA431V402A3AkkA64kA/g1w60UT+0ksBsCkyD0M0U"
if (ok:=FindText(X, Y, 342-150000, 478-150000, 342+150000, 478+150000, 0, 0, Text))
{
MouseMove,X+150,Y
FindText().Click(X+150, Y, "L")
; 》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
; 第7s步:点击收费登记窗口中收费方式下拉列表单选框选项的"微信"选项
loop,5
{
Sleep,5
Text:=X:=Y:=""
; Text:="|<>*189$28.4W120ec7zoywU0Q6aTsjuM061ebyPnW03hA9zWYEY2+P2E8dO9zX14Y2U"
; "微信"选项
Text:="|<>*188$64.2M0G0UkTzU090TzWzw4U04jw4WyH7zs0GV7zsbyN8UBD4F82H9YW0oolzyDzbzs0GG0W9om1001tcDzeLfzz0AXXkA9GV1U02A3AkZu7g0A/g1w2E87k0ksBsCt3bks0U"
if (ok:=FindText(X, Y, 415-150000, 604-150000, 415+150000, 604+150000, 0, 0, Text))
{
MouseMove,X+150,Y-15
; 在当前位置上左右移动鼠标光标,提示引起注意
SetMouseDelay,10
loop,5
{
MouseMove,X+150+50,Y-15
Sleep,150
MouseMove,X+150-50,Y-15
}
SetMouseDelay,0
FindText().Click(X+150,Y-15, "L")
; 》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
; 第8s步:点击收费登记窗口中的位置姓名"搜索"输入框 MailTo: 595076941@qq.com
loop,5
{
Sleep,5
Text:=X:=Y:=""
; "搜索"输入框
Text:="|<>*185$64.14080EUTzU1zz0E111YW00F1zy/zrzs0Dz408U00E0AU4F8aENzz0nzkAUMV0400810V2W4Dz01zy2428kU401ZUE88G3zk0vzX0kV8810A10M1W10U40rzv03/zzzw0U"
if (ok:=FindText(X, Y, 342-150000, 238-150000, 342+150000, 238+150000, 0, 0, Text))
{
MouseMove,X+150,Y
FindText().Click(X+150, Y, "L")
; 》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
; 第9s步:发送 Ctrl + A 模拟按键动作到 收费登记窗口中的位置姓名"搜索"输入框
Sleep,5
Send,^a
Sleep,5
; MsgBox, 找搜索输入框循环迭代的次数_64 位整数_是 %A_Index%. ; A_Index 将为 1, 2, 接着 3
搜索输入框s= %A_Index%
break
}
}
微信选项s= %A_Index%
break
}
}
收费方式下拉列表s= %A_Index%
break
}
}
; ##################################################################################################################
; ##################################################################################################################
; ##################################################################################################################
错误提示对话框中的确定按钮s= %A_Index%
; 显示提示文本,用于查看Loop循环迭代的次数,便于今后调试修改源代码
; MsgBox,,,"搜索输入框s:" %搜索输入框s% `n "微信选项s:" %微信选项s% `n "收费方式下拉列表s:" %收费方式下拉列表s% `n "错误提示对话框中的确定按钮s:" %错误提示对话框中的确定按钮s%,9
break
}
; MsgBox 2
Sleep,5
Text:=X:=Y:=""
; Text:="|<>*182$57.vzz00004bzM03CSQwY10Qttm7bY3zTbDCMU4U7vws1k0wzyT3bDCM4a07lwttn0YnwsTbDCNYaNbvwtVnAYn4zTb10tsTkwvwttzC9sbAQ7zDV7UQ1U"
; 点击成功提示对话框中的"打印预览"按钮
Text:="|<>*191$88.Tzzzzzzzzzzzzzvzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzjzw0800HTzzzzzyk06Qwtt83zzzzzUSttn7bYXzzzzzzjvbbCM2EXzzzzzyzi0QUDDzbzzzzzsSttncok0zzzzzz7vbbC/HDvzzzzzsziSQvhAnjzzzzzvytVniYn6zzzzzzjvUUSyDwSTzzzzyziSTvWT9vzzzzzXUzty8y3kDzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzrzzzzzzzzzzzzzyU"
if (ok:=FindText(X, Y, 1068-150000, 688-150000, 1068+150000, 688+150000, 0, 0, Text))
{
MouseMove,X,Y
FindText().Click(X, Y, "L")
; 》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
; 第3步:点击打印预览网页窗口中的"打印"按钮 MailTo: 595076941@qq.com
loop,60
{
; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
; 先激活打印预览网页窗口
DetectHiddenWindows,On ;设置脚本可以 "看见" 隐藏的窗口.
SetTitleMatchMode,3 ; 3: 窗口标题必须和 WinTitle 完全一致才能匹配.
WinActivate,打印预览
WinGet, dyylid, ID,打印预览
DllCall("SwitchToThisWindow", "UInt", dyylid, "UInt", 1)
; 再点击打印预览网页窗口中的"打印"按钮
Sleep,5
Text:=X:=Y:=""
; "打印"按钮
Text:="|<>*133$16.1zk810jc40ULrW0JTyi05TztU0e03jzuE1Ezy000000067vX28+8UUXu28+8UUW+2/88kUU2C0+"
if (ok:=FindText(X, Y, 457-150000, 41-150000, 457+150000, 41+150000, 0, 0, Text))
; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
{
MouseMove,X,Y
FindText().Click(X, Y, "L")
; 》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
; 第4步:点击打印对话框中的"确定"按钮 MailTo: 595076941@qq.com
loop,5
{
; 先激活打印 确认对话框
DetectHiddenWindows,On ;设置脚本可以 "看见" 隐藏的窗口.
SetTitleMatchMode,3 ; 3: 窗口标题必须和 WinTitle 完全一致才能匹配.
WinActivate,打印
WinGet, dyqrid, ID,打印
DllCall("SwitchToThisWindow", "UInt", dyqrid, "UInt", 1)
; 再点击打印对话框中的"确定"按钮
Sleep,5
Text:=X:=Y:=""
; 打印对话框中的"确定"按钮
Text:="|<>*149$70.Dzzzzzzzzzzl00000000000c00000000001U000104000060007bU80000M0004WTz0001U000EF0400060002Dk00000M000CdTz0001U001fw2000060002eF80000M000+z4y0001U000uYG000060002eGc0000M00013Fz0001U0000000000600000000000I00000000002Dzzzzzzzzzzm"
if (ok:=FindText(X, Y, 1091-150000, 537-150000, 1091+150000, 537+150000, 0, 0, Text))
{
MouseMove,X,Y
FindText().Click(X, Y, "L")
; 打印对话框是打印预览网页窗口的下一级窗口,两个窗口之间有主从嵌套关系。
; 为了防止此对话框没有关闭消失之前就激活打印预览窗口,此处等待一下,让对话框消失。
; 而打印预览窗口又是收费登记窗口的子窗口,打印对话框是收费登记窗口的孙窗口,
; 各窗口之间应当等待激活和关闭,处理好各窗口的显示和隐藏时间关系,防止各窗口同时竞争性激活,每个有主从关系的窗口不应同时激活.
; 》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
; 第5步:点击打印预览网页窗口中的"关闭"按钮 MailTo: 595076941@qq.com
loop,5
{
Sleep,5
Text:=X:=Y:=""
; 打印预览网页窗口中的"关闭"按钮
; 先激活打印预览网页窗口
DetectHiddenWindows,On ;设置脚本可以 "看见" 隐藏的窗口.
SetTitleMatchMode,3 ; 3: 窗口标题必须和 WinTitle 完全一致才能匹配.
WinActivate,打印预览
WinGet, dyylid, ID,打印预览
DllCall("SwitchToThisWindow", "UInt", dyylid, "UInt", 1)
; Text:="|<>*125$23.0y002200Dzy0E040V08170E2T0U48108E20EzY0U08100E3zzU000000000002240284z0002zsV4412882zTzY8UU8l2UGW8Ud4UV6C0m1s"
; if (ok:=FindText(X, Y, 496-150000, 41-150000, 496+150000, 41+150000, 0, 0, Text))
; {
;;; FindText().Click(X, Y, "L")
; }
Text:="|<>*125$23.0y002200Dzy0E040V08170E2T0U48108E20EzY0U08100E3zzU000000000002240284z0002zsV4412882zTzY8UU8l2UGW8Ud4UV6C0m1s"
if (ok:=FindText(X, Y, 496-150000, 41-150000, 496+150000, 41+150000, 0, 0, Text))
{
Sleep,10
MouseMove,X,Y
Sleep,10
MouseMove,X,Y
Sleep,10
Click
Sleep,10
Click
Sleep,10
FindText().Click(X, Y, "L")
; 》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
; 第6步:提交保存后的 成功提示对话框中的"取消"按钮
loop,5
{
Sleep,5
Text:=X:=Y:=""
; 成功提示对话框中的"取消"按钮
Text:="|<>*175$27.zU8W2DsqGFF2GXu97zFFAUPt8o3F+0zu9kY3LY4zz9kY31HAUMA54CU"
if (ok:=FindText(X, Y, 1152-150000, 667-150000, 1152+150000, 667+150000, 0, 0, Text))
{
MouseMove,X,Y
FindText().Click(X, Y, "L")
; 》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
; 第7步:点击"收费方式下拉列表单选框" MailTo: 595076941@qq.com
; 由于下拉列表收费方式下拉列表单选框选项内容有可能会不同变化,
; 所以此处识别单选框前面的固定不变的文字并通过位移加减计算确定目标坐标位置。
loop,20
{
; 先激活 业务管理平台 网页窗口
DetectHiddenWindows,On ;设置脚本可以 "看见" 隐藏的窗口.
SetTitleMatchMode,2 ; 2: 窗口标题的任意位置包含 WinTitle 才能匹配.
WinActivate,业务管理平台V1.0-吴中区
WinGet, glptid, ID,业务管理平台V1.0-吴中区
DllCall("SwitchToThisWindow", "UInt", glptid, "UInt", 1)
Sleep,5
Text:=X:=Y:=""
; "收费方式下拉列表单选框"
Text:="|<>*190$64.2M0G0300/0090TzU400a04jw4Wzzzzw0GV7zs80080BD4F80U00U0oolzy3z7u00GG0W88A6801tcDzVUkMk0AXXkA431V402A3AkkA64kA/g1w60UT+0ksBsCkyD0M0U"
if (ok:=FindText(X, Y, 342-150000, 478-150000, 342+150000, 478+150000, 0, 0, Text))
{
MouseMove,X+150,Y
FindText().Click(X+150, Y, "L")
; 》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
; 第8步:点击收费登记窗口中收费方式下拉列表单选框选项的"微信"选项
loop,5
{
Sleep,5
Text:=X:=Y:=""
; Text:="|<>*189$28.4W120ec7zoywU0Q6aTsjuM061ebyPnW03hA9zWYEY2+P2E8dO9zX14Y2U"
; "微信"选项
Text:="|<>*188$64.2M0G0UkTzU090TzWzw4U04jw4WyH7zs0GV7zsbyN8UBD4F82H9YW0oolzyDzbzs0GG0W9om1001tcDzeLfzz0AXXkA9GV1U02A3AkZu7g0A/g1w2E87k0ksBsCt3bks0U"
if (ok:=FindText(X, Y, 415-150000, 604-150000, 415+150000, 604+150000, 0, 0, Text))
{
MouseMove,X+150,Y-15
; 在当前位置上左右移动鼠标光标,提示引起注意
SetMouseDelay,10
loop,5
{
MouseMove,X+150+50,Y-15
Sleep,150
MouseMove,X+150-50,Y-15
}
SetMouseDelay,0
FindText().Click(X+150,Y-15, "L")
; 》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
; 第9步:点击收费登记窗口中的位置姓名"搜索"输入框
loop,5
{
Sleep,5
Text:=X:=Y:=""
; "搜索"输入框 MailTo: 595076941@qq.com
Text:="|<>*185$64.14080EUTzU1zz0E111YW00F1zy/zrzs0Dz408U00E0AU4F8aENzz0nzkAUMV0400810V2W4Dz01zy2428kU401ZUE88G3zk0vzX0kV8810A10M1W10U40rzv03/zzzw0U"
if (ok:=FindText(X, Y, 342-150000, 238-150000, 342+150000, 238+150000, 0, 0, Text))
{
MouseMove,X+150,Y
FindText().Click(X+150, Y, "L")
; 》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
; 第10步:发送 Ctrl + A 模拟按键动作到 收费登记窗口中的位置姓名"搜索"输入框,
; 全选搜索框中原有的内容,为下一次筛选搜索过滤记录行做好输入准备。
Sleep,5
Send,^a
Sleep,5
搜索输入框= %A_Index%
; MsgBox, ,循环迭代的次数,找 搜索输入框 循环迭代的次数_64 位整数_是 %A_Index%.,5
break
}
}
微信选项= %A_Index%
; MsgBox, ,循环迭代的次数,找 微信选项 循环迭代的次数_64 位整数_是 %A_Index%.,5
break
}
}
收费方式下拉列表= %A_Index%
; MsgBox, ,循环迭代的次数,找 收费方式下拉列表单选框 循环迭代的次数_64 位整数_是 %A_Index%.,5
break
}
}
成功提示对话框中的取消按钮= %A_Index%
; MsgBox, ,循环迭代的次数,找 成功提示对话框中的取消按钮 循环迭代的次数_64 位整数_是 %A_Index%.,5
break
}
}
打印预览网页窗口中的关闭按钮= %A_Index%
; MsgBox, ,循环迭代的次数,找 打印预览网页窗口中的关闭按钮 循环迭代的次数_64 位整数_是 %A_Index%.,9
break
}
}
打印对话框中的确定按钮= %A_Index%
; MsgBox, ,循环迭代的次数,找 打印对话框中的确定按钮 循环迭代的次数_64 位整数_是 %A_Index%.,5
break
}
}
; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
打印预览网页窗口中的打印按钮= %A_Index%
; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
; MsgBox, ,循环迭代的次数,找 打印预览网页窗口中的打印按钮 循环迭代的次数_64 位整数_是 %A_Index%.,5 ; A_Index 将为 1, 2, 接着 3
break
}
}
成功提示对话框中的打印预览按钮= %A_Index%
; MsgBox, ,循环迭代的次数,找 成功提示对话框中的"打印预览"按钮 循环迭代的次数_64 位整数_是 %A_Index%.,5 ; A_Index 将为 1, 2, 接着 3
break
}
}
提交保存= %A_Index%
; 显示提示文本,用于查看Loop循环迭代的次数,便于今后调试修改源代码
MsgBox,,,"搜索输入框:" %搜索输入框% `n "微信选项:" %微信选项% `n "收费方式下拉列表:" %收费方式下拉列表% `n "成功提示对话框中的取消按钮:" %成功提示对话框中的取消按钮% `n "打印预览网页窗口中的关闭按钮:" %打印预览网页窗口中的关闭按钮% `n "打印对话框中的确定按钮:" %打印对话框中的确定按钮%`n "打印预览网页窗口中的打印按钮:" %打印预览网页窗口中的打印按钮% `n "成功提示对话框中的打印预览按钮:" %成功提示对话框中的打印预览按钮%,30
; MsgBox, ,循环迭代的次数,找 提交保存 循环迭代的次数_64 位整数_是 %A_Index%.,5 ; A_Index 将为 1, 2, 接着 3
break
}
}
}
return
https://www.autoahk.com/archives/52264
https://www.cnblogs.com/delphixx/p/18807118
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。