AutoHotKey

Windows有什么小软件可以指定键盘上一个按键等同于点击屏幕上指定的地方?

这个需求看起来非常适合用 AutoHotKey 来解决。

首先从官网上下载 AutoHotKey 安装程序,运行后选择第一项(快速安装)即可,等待片刻,然后选择倒数第二项(运行 AutoHotKey)

再关掉 AutoHotKey 软件窗口,并在桌面上右键,在“新建”菜单栏中选择 AutoHotKey Script,创建一个新的 ahk 脚本

用记事本打开新建的 ahk 文件并填入以下内容:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
x1 := -282     ; 要点击位置的横坐标(默认值)
y1 := 1008     ; 要点击位置的纵坐标(默认值)


; 快捷键:Ctrl + F5
^F5::
 {
   MouseGetPos, x1, y1                   ; 更新要点击的位置坐标
   return
 }
 
; 快捷键:F5
F5::
 {
   MouseClick, left, %x1%, %y1%, 1, 0    ; 在指定坐标处点击鼠标左键
   return
 }


x2 := 416     ; 要点击位置的横坐标(默认值)
y2 := 634     ; 要点击位置的纵坐标(默认值)

; 快捷键:Ctrl + F6
^F6::
 {
   MouseGetPos, x2, y2                   ; 更新要点击的位置坐标
   return
 }

; 快捷键:F6
F6::
 {
   MouseClick, left, %x2%, %y2%, 1, 0    ; 在指定坐标处点击鼠标左键
   return
 }


x3 := 415     ; 要点击位置的横坐标(默认值)
y3 := 669     ; 要点击位置的纵坐标(默认值)

; 快捷键:Ctrl + F7
^F7::
 {
   MouseGetPos, x3, y3                   ; 更新要点击的位置坐标
   return
 }

; 快捷键:F7
F7::
 {
   MouseClick, left, %x3%, %y3%, 1, 0    ; 在指定坐标处点击鼠标左键
   return
 }

; 按 F8 对应点击屏幕坐标
; 按 ^F8 对应重新设置屏幕坐标位置

xpos := 0 ; 要点击位置的横坐标(默认值)
ypos := 0 ; 要点击位置的纵坐标(默认值)


; 快捷键:^F8
^F8::
{
   MouseGetPos, xpos, ypos
   ; 更新位置坐标
   ; MsgBox,拾取光标坐标x:%xpos%,y:%ypos%
   return
}

; 快捷键:F8
F8::
{
   MouseClick, left, %xpos%, %ypos%, 1, 0 ; 在指定坐标处点击鼠标左键
   return
}

后台自动运行-cmd脚本

1
2
3
4
5
6
@echo off
if "%1"=="h" goto begin
start mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin

"D:\Program Files\AutoHotkey\UX\AutoHotkeyUX.exe" "D:\Program Files\AutoHotkey\UX\launcher.ahk" "D:\00_zdk\myTools\AutoHotkey\sendClick-scrcpy.ahk" %*

AHK 键盘控制鼠标点击屏幕不同位置

  • 按键控制鼠标点击屏幕特定位置
  • 按键控制重设屏幕点击位置
  • 按键显示当前鼠标在屏幕上的位置

V1.0代码功能

  • 按 A 和 D 分别对应点击两个单独的屏幕坐标
  • 按 Q 和 E分别对应重新设置两个单独的屏幕坐标位置,并弹窗显示拾取到的光标坐标

V1.0代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
; 按 A 和 D 分别对应点击两个单独的屏幕坐标
; 按 Q 和 E 分别对应重新设置两个单独的屏幕坐标位置

xpos := 0 ; 要点击位置的横坐标(默认值)
ypos := 0 ; 要点击位置的纵坐标(默认值)
xpos2 := 0 ; 要点击位置的横坐标(默认值)
ypos2 := 0 ; 要点击位置的纵坐标(默认值)


; 快捷键:q
q::
{
   MouseGetPos, xpos, ypos
   ; 更新位置坐标
   MsgBox,拾取光标坐标x:%xpos%,y:%ypos%
   return
}

; 快捷键:a
a::
{
   MouseClick, left, %xpos%, %ypos%, 1, 0 ; 在指定坐标处点击鼠标左键
   return
}

; 快捷键:e
e::
{
   MouseGetPos, xpos2, ypos2
   ; 更新位置坐标
   MsgBox,拾取光标坐标x:%xpos2%,y:%ypos2%
   return
}

; 快捷键:d
d::
{
   MouseClick, left, %xpos2%, %xpos2%, 1, 0 ; 在指定坐标处点击鼠标左键
   return
}

V2.0代码功能

  • 按 A 和 D 分别对应点击两个单独的屏幕坐标
  • 按 Q 和 E分别对应重新设置两个单独的屏幕坐标位置,并弹窗显示拾取到的光标坐标,3秒后弹窗自动关闭

V2.0代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
; 按 A 、S、 D 分别对应点击三个单独的屏幕坐标
; 按 A 、S、 D 分别对应点击三个单独的屏幕坐标
; 按 Q 、W、 E 分别对应重新设置三个单独的屏幕坐标位置

x := 0 ; 要点击位置的横坐标(默认值)
y := 0 ; 要点击位置的纵坐标(默认值)
x1 := 0 ; 要点击位置的横坐标(默认值)
y1 := 0 ; 要点击位置的纵坐标(默认值)
x2 := 0 ; 要点击位置的横坐标(默认值)
y2 := 0 ; 要点击位置的纵坐标(默认值)


; 快捷键:q
q::
{
   MouseGetPos, x, y
   ; 更新位置坐标
   MsgBox, 4, ,拾取坐标 x:%x%  y:%y% 此弹窗1秒后关闭, 1
   return
}

; 快捷键:a
a::
{
   MouseClick, left, %x%, %y%, 1, 0 ; 在指定坐标处点击鼠标左键
   return
}

; 快捷键:w
w::
{
   MouseGetPos, x1, y1
   ; 更新位置坐标
   MsgBox, 4, ,拾取坐标 x:%x1%  y:%y1% 此弹窗1秒后关闭, 1
   return
}

; 快捷键:s
s::
{
   MouseClick, left, %x1%, %y1%, 1, 0 ; 在指定坐标处点击鼠标左键
   return
}

; 快捷键:e
e::
{
   MouseGetPos, x2, y2
   ; 更新位置坐标
   MsgBox, 4, ,拾取坐标 x:%x2%  y:%y2% 此弹窗1秒后关闭, 1
   return
}

; 快捷键:d
d::
{
   MouseClick, left, %x2%, %y2%, 1, 0 ; 在指定坐标处点击鼠标左键s
   return
}

简化版

  • 按 F5 分别对应点击屏幕坐标
  • 按 Ctrl + F5对应重新设置屏幕坐标位置,并弹窗显示拾取到的光标坐标
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
; 按 F5 对应点击屏幕坐标
; 按 ^F5 对应重新设置屏幕坐标位置

xpos := 0 ; 要点击位置的横坐标(默认值)
ypos := 0 ; 要点击位置的纵坐标(默认值)


; 快捷键:^F5
^F5::
{
   MouseGetPos, xpos, ypos
   ; 更新位置坐标
   MsgBox,拾取光标坐标x:%xpos%,y:%ypos%
   return
}

; 快捷键:F5
F5::
{
   MouseClick, left, %xpos%, %ypos%, 1, 0 ; 在指定坐标处点击鼠标左键
   return
}

AutoHotKey 操作鼠标进行移动托动点击

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
F9::
MouseGetPos,xpos,ypos
MouseClick,,%xpos%,%ypos%,,0,D
MouseClick,,0,-40,,0,U,R
MouseMove,%xpos%,%ypos%
Return

F10::
MouseGetPos,xpos,ypos
MouseClick,,%xpos%,%ypos%,,0,D
MouseClick,,0,40,,0,U,R
MouseMove,%xpos%,%ypos%
Return

autohotkey鼠标自动点击,并且可以判断是否有按键按下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
sleep 3000

flag := 0

if (flag = 0)
{
	Loop 1000
	{
		Click, xpos, xpos
		sleep 100
		if GetKeyState("F8")
		{
			flag++
			MsgBox, F8按键被按下了,按回车继续
			continue
		}
	}
}
Licensed under CC BY-NC-SA 4.0