Skip to content

Commit 02f5378

Browse files
authored
Add files via upload
1 parent 316e6c3 commit 02f5378

File tree

3 files changed

+181
-0
lines changed

3 files changed

+181
-0
lines changed

TablerClick.ico

66.1 KB
Binary file not shown.

TablerClick.png

3.35 KB
Loading

TimedClickTool.ahk

Lines changed: 181 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,181 @@
1+
#Requires AutoHotkey v2.0 ; 确保脚本在 AutoHotkey v2 下运行
2+
#NoTrayIcon ; 不显示托盘图标
3+
; AI工具辅助
4+
; 默认点击间隔时间(秒)、点击次数、点击间隔(毫秒)、循环次数和按键类型
5+
ClickInterval := 5
6+
ClickCount := 1
7+
ClickDelay := 100 ; 默认点击间隔为 100 毫秒
8+
LoopCount := 1 ; 默认循环次数为 1
9+
ClickButton := "左键" ; 默认点击左键
10+
IsRunning := false ; 标记定时器是否正在运行
11+
IsPaused := false ; 标记是否处于暂停状态
12+
RemainingTime := 0 ; 剩余时间(毫秒)
13+
14+
; 启动时弹出信息窗口
15+
MsgBox("欢迎使用定时点击工具`n使用AutoHotkey v2.0编写`n`n`nHAF半个水果`nhttps://github.com/little-Data/TimedClickTool`n`n点击确定后即可使用`n", "欢迎", "OK")
16+
17+
; 创建 GUI 窗口
18+
MyGui := Gui()
19+
MyGui.Title := "定时点击工具"
20+
MyGui.Add("Text",, "点击间隔时间(秒):")
21+
MyGui.Add("Edit", "vClickInterval").Text := ClickInterval
22+
MyGui.Add("Text", "yp+30", "点击次数:")
23+
MyGui.Add("Edit", "vClickCount").Text := ClickCount
24+
MyGui.Add("Text", "yp+30", "点击间隔(毫秒):")
25+
MyGui.Add("Edit", "vClickDelay").Text := ClickDelay
26+
MyGui.Add("Text", "yp+30", "循环次数:`n(-1 为无限循环, 按“重设”停止)")
27+
MyGui.Add("Edit", "vLoopCount").Text := LoopCount
28+
MyGui.Add("Text", "yp+30", "点击按键:")
29+
ClickButtonDropdown := MyGui.Add("DropDownList", "vClickButton", ["左键", "中键", "右键"])
30+
ClickButtonDropdown.Text := ClickButton ; 设置默认选项
31+
MyGui.Add("Text", "yp+30", "剩余时间:")
32+
RemainingTimeText := MyGui.Add("Text", "yp+0 w100", "00:00:00.000") ; 显示剩余时间
33+
34+
; 添加按钮(默认垂直排列)
35+
StartButton := MyGui.Add("Button", "Default", "开始")
36+
StartButton.OnEvent("Click", StartClick)
37+
PauseButton := MyGui.Add("Button",, "暂停")
38+
PauseButton.OnEvent("Click", PauseClick)
39+
ResetButton := MyGui.Add("Button",, "重设")
40+
ResetButton.OnEvent("Click", ResetClick)
41+
AboutButton := MyGui.Add("Button",, "关于")
42+
AboutButton.OnEvent("Click", AboutClick)
43+
MyGui.Show()
44+
PauseButton.Enabled := false
45+
46+
; 格式化时间为 HH:MM:SS.MS
47+
FormatTime(ms) {
48+
; 计算小时、分钟、秒和毫秒
49+
hours := Format("{:02}", ms // 3600000)
50+
ms := Mod(ms, 3600000)
51+
minutes := Format("{:02}", ms // 60000)
52+
ms := Mod(ms, 60000)
53+
seconds := Format("{:02}", ms // 1000)
54+
ms := Format("{:03}", Mod(ms, 1000))
55+
return hours ":" minutes ":" seconds "." ms
56+
}
57+
58+
; 执行点击的函数
59+
PerformClicks() {
60+
global ClickCount, ClickButton, ClickDelay, ClickInterval, RemainingTime, IsRunning, LoopCount
61+
Loop ClickCount {
62+
; 根据选择的按键执行点击
63+
if (ClickButton = "左键") {
64+
Click("Left")
65+
} else if (ClickButton = "中键") {
66+
Click("Middle")
67+
} else if (ClickButton = "右键") {
68+
Click("Right")
69+
}
70+
Sleep(ClickDelay) ; 每次点击间隔自定义时间
71+
}
72+
; 主要功能执行结束后,恢复按钮状态
73+
StartButton.Enabled := true
74+
PauseButton.Enabled := false
75+
76+
; 如果未点击“重设”按钮且循环次数未用完,则重新开始倒计时
77+
if (IsRunning && (LoopCount = -1 || LoopCount > 1)) {
78+
if (LoopCount != -1) {
79+
LoopCount-- ; 减少循环次数
80+
PauseButton.Enabled := true
81+
StartButton.Enabled := false
82+
}
83+
RemainingTime := ClickInterval * 1000
84+
RemainingTimeText.Text := FormatTime(RemainingTime)
85+
SetTimer(UpdateRemainingTime, 100) ; 每 100 毫秒更新一次
86+
} else {
87+
IsRunning := false
88+
}
89+
}
90+
91+
; 更新剩余时间的函数
92+
UpdateRemainingTime() {
93+
global RemainingTime, RemainingTimeText
94+
if (RemainingTime > 0) {
95+
RemainingTime -= 100 ; 每次减少 100 毫秒
96+
RemainingTimeText.Text := FormatTime(RemainingTime)
97+
} else {
98+
SetTimer(UpdateRemainingTime, 0) ; 停止定时器
99+
IsRunning := false
100+
PerformClicks() ; 在指定时间后执行点击
101+
}
102+
}
103+
104+
; 开始按钮的事件
105+
StartClick(*) {
106+
global IsRunning, IsPaused, ClickInterval, ClickCount, ClickDelay, ClickButton, RemainingTime, LoopCount
107+
; 获取用户输入的点击间隔时间、点击次数、点击间隔、循环次数和按键类型
108+
ClickInterval := MyGui.Submit(false).ClickInterval
109+
ClickCount := MyGui.Submit(false).ClickCount
110+
ClickDelay := MyGui.Submit(false).ClickDelay
111+
LoopCount := MyGui.Submit(false).LoopCount
112+
ClickButton := MyGui.Submit(false).ClickButton
113+
114+
; 检查输入是否为整数(循环次数可以是 -1)
115+
if !(IsInteger(ClickInterval) && IsInteger(ClickCount) && IsInteger(ClickDelay) && (IsInteger(LoopCount) || LoopCount = -1)) {
116+
MsgBox("错误:输入必须为整数!", "错误", "OK")
117+
return ; 停止运行
118+
}
119+
120+
; 检查点击间隔时间是否小于 2 秒
121+
if (ClickInterval < 2) {
122+
MsgBox("错误:点击间隔时间不能小于 2 秒!", "错误", "OK")
123+
return ; 停止运行
124+
}
125+
126+
if (IsPaused) {
127+
; 如果处于暂停状态,则恢复计时器
128+
SetTimer(UpdateRemainingTime, 100)
129+
IsPaused := false
130+
PauseButton.Enabled := true ; 暂停按钮恢复正常
131+
} else {
132+
; 将秒转换为毫秒
133+
RemainingTime := ClickInterval * 1000
134+
RemainingTimeText.Text := FormatTime(RemainingTime)
135+
; 启动定时器
136+
SetTimer(UpdateRemainingTime, 100) ; 每 100 毫秒更新一次
137+
IsRunning := true
138+
}
139+
StartButton.Enabled := false ; 开始按钮变为不可用
140+
PauseButton.Enabled := true ; 暂停按钮恢复正常
141+
ResetButton.Enabled := true ; 重设按钮恢复正常
142+
}
143+
144+
; 暂停按钮的事件
145+
PauseClick(*) {
146+
global IsPaused
147+
; 暂停计时器
148+
SetTimer(UpdateRemainingTime, 0)
149+
IsPaused := true
150+
StartButton.Enabled := true ; 开始按钮恢复正常
151+
PauseButton.Enabled := false ; 暂停按钮变为不可用
152+
}
153+
154+
; 重设按钮的事件
155+
ResetClick(*) {
156+
global RemainingTime, ClickInterval, ClickCount, ClickDelay, ClickButton, IsRunning, IsPaused, LoopCount
157+
; 停止定时器
158+
SetTimer(UpdateRemainingTime, 0)
159+
IsRunning := false
160+
IsPaused := false
161+
; 重置剩余时间
162+
RemainingTime := ClickInterval * 1000
163+
RemainingTimeText.Text := FormatTime(RemainingTime)
164+
StartButton.Enabled := true ; 开始按钮恢复正常
165+
PauseButton.Enabled := false ; 暂停按钮变为不可用
166+
}
167+
168+
; 关于按钮的事件
169+
AboutClick(*) {
170+
MsgBox("定时点击工具`n版本: 1.0`n作者: HAF半个水果`n描述: 这是一个用于定时点击鼠标按键的工具,使用AutoHotkey v2.0编写`n`nhttps://github.com/little-Data/TimedClickTool", "关于", "OK")
171+
}
172+
173+
; 关闭窗口时的事件
174+
GuiClose(*) {
175+
ExitApp() ; 直接退出软件
176+
}
177+
178+
; 判断是否为整数的函数
179+
IsInteger(value) {
180+
return value ~= "^-?\d+$"
181+
}

0 commit comments

Comments
 (0)