如何停止活动的 AutoHotkey 脚本?
How do I stop an active AutoHotkey script?
昨天在调试我的 AutoHotkey 脚本时,我不小心触发了 MouseMove
和 MouseClick
事件的无限循环。我的鼠标每 0.5 秒就会点击屏幕的随机部分。
在尝试使用任务管理器终止 AHK 失败后,我最终关闭了计算机以结束脚本。
如何停止活动的 AutoHotkey 脚本?
添加紧急出口热键
结束活动脚本最可靠的方法是预先包含紧急 ExitApp
热键。通常的做法是将以下内容放在任何脚本的底部。
Esc::ExitApp ; Exit script with Escape key
您还可以将热键设置为 pause, suspend, or reload 您的脚本。
^!p::Pause ; Pause script with Ctrl+Alt+P
^!s::Suspend ; Suspend script with Ctrl+Alt+S
^!r::Reload ; Reload script with Ctrl+Alt+R
注销
在 Windows 10/8/7/Vista 上,您可以使用键盘快捷键 Ctrl+Alt[=46= 快速注销]+Delete,接着是Alt+L.
这是因为按 Ctrl+Alt+Delete 会打开一个特殊的 window,它不能被 AutoHotkey 等程序操作。
以任务栏图标结束
如果您可以控制键盘和鼠标,可以通过右键单击任务栏中 AutoHotkey 的绿色 H 图标并选择 "Exit"
来结束脚本
使用 AHKPanic() 结束所有活动脚本
对于更通用的解决方案,AHK 用户 None 编写了 AHKPanic()
,一种可以暂停、暂停或终止所有其他 运行 脚本的方法。 (可选地结束调用它的脚本)
AHKPanic(Kill=0, Pause=0, Suspend=0, SelfToo=0) {
DetectHiddenWindows, On
WinGet, IDList ,List, ahk_class AutoHotkey
Loop %IDList%
{
ID:=IDList%A_Index%
WinGetTitle, ATitle, ahk_id %ID%
IfNotInString, ATitle, %A_ScriptFullPath%
{
If Suspend
PostMessage, 0x111, 65305,,, ahk_id %ID% ; Suspend.
If Pause
PostMessage, 0x111, 65306,,, ahk_id %ID% ; Pause.
If Kill
WinClose, ahk_id %ID% ;kill
}
}
If SelfToo
{
If Suspend
Suspend, Toggle ; Suspend.
If Pause
Pause, Toggle, 1 ; Pause.
If Kill
ExitApp
}
}
如果你想关闭特定的 window 而不做循环,我创建了以下内容:
DetectHiddenWindows, On
path = %A_Desktop%\Test.ahk - AutoHotkey v1.1.26.01
path2 = %A_Desktop%\Test2.ahk - AutoHotkey v1.1.26.01
WinClose, %path%
WinClose, %path2%
**注意 1:**文件名 +“-AutoHotKey blah blah blah”(这是当您打开隐藏在右下角的 window 时热键的 window 名称靠近时钟的角落)
**注意 2:**文件名必须区分大小写。
如果您想从 Windows 命令提示符中停止它,
停止所有自动热键脚本:
taskkill /im "autohotkey.exe"
停止特定脚本:
wmic process where "commandline like '%%MyScript.ahk'" delete
您也可以编写脚本 #SingleInstance force
并注意“-quit”参数或其他内容。
#SingleInstance force
#Persistent
If A_Args[1] == "--stop"
ExitApp
; just some random stuff for the script to do
count := 0
Loop,
{
count++
Tooltip, %count%
Sleep, 200
}
所以你 运行 再次使用相同的脚本,但带有参数。 BAM 消失了。
只是为了完整性。 @Stevoisiak 的回答已经很好地满足了要求的目的。
我也在寻找如何从另一个 autohotkey 脚本关闭一个特定的 运行 脚本,所以我尝试了 cristivaldo 的解决方案,但它对我来说不太有效,所以我稍微改变了它。
我添加了 SetTitleMatchMode, 2
所以它匹配 window 部分匹配的标题,所以你不必完全输入完整的 window 标题(这样它仍然会匹配甚至如果自动热键版本号发生变化)。我还删除了路径和变量。
这里有一个 stop/close 特定脚本的示例(只需将 examplescriptfile.ahk
更改为您希望停止的 运行 autohotkey 脚本的文件名):
DetectHiddenWindows, On
SetTitleMatchMode, 2
WinClose, examplescriptfile.ahk
1.go 到 windows 托盘
2.right-click在“H”标志上
3.click 关于“暂停热键”或“退出”
这是停止自动热键脚本最简单最简单的方法
但不要点击暂停脚本,否则重新映射的键将被关闭
此外,如果您暂停了热键,“H”将变为“S”
希望对您有所帮助。
我想你也可以按 CTRL+ALT+DEL
昨天在调试我的 AutoHotkey 脚本时,我不小心触发了 MouseMove
和 MouseClick
事件的无限循环。我的鼠标每 0.5 秒就会点击屏幕的随机部分。
在尝试使用任务管理器终止 AHK 失败后,我最终关闭了计算机以结束脚本。
如何停止活动的 AutoHotkey 脚本?
添加紧急出口热键
结束活动脚本最可靠的方法是预先包含紧急 ExitApp
热键。通常的做法是将以下内容放在任何脚本的底部。
Esc::ExitApp ; Exit script with Escape key
您还可以将热键设置为 pause, suspend, or reload 您的脚本。
^!p::Pause ; Pause script with Ctrl+Alt+P
^!s::Suspend ; Suspend script with Ctrl+Alt+S
^!r::Reload ; Reload script with Ctrl+Alt+R
注销
在 Windows 10/8/7/Vista 上,您可以使用键盘快捷键 Ctrl+Alt[=46= 快速注销]+Delete,接着是Alt+L.
这是因为按 Ctrl+Alt+Delete 会打开一个特殊的 window,它不能被 AutoHotkey 等程序操作。
以任务栏图标结束
如果您可以控制键盘和鼠标,可以通过右键单击任务栏中 AutoHotkey 的绿色 H 图标并选择 "Exit"
来结束脚本使用 AHKPanic() 结束所有活动脚本
对于更通用的解决方案,AHK 用户 None 编写了 AHKPanic()
,一种可以暂停、暂停或终止所有其他 运行 脚本的方法。 (可选地结束调用它的脚本)
AHKPanic(Kill=0, Pause=0, Suspend=0, SelfToo=0) {
DetectHiddenWindows, On
WinGet, IDList ,List, ahk_class AutoHotkey
Loop %IDList%
{
ID:=IDList%A_Index%
WinGetTitle, ATitle, ahk_id %ID%
IfNotInString, ATitle, %A_ScriptFullPath%
{
If Suspend
PostMessage, 0x111, 65305,,, ahk_id %ID% ; Suspend.
If Pause
PostMessage, 0x111, 65306,,, ahk_id %ID% ; Pause.
If Kill
WinClose, ahk_id %ID% ;kill
}
}
If SelfToo
{
If Suspend
Suspend, Toggle ; Suspend.
If Pause
Pause, Toggle, 1 ; Pause.
If Kill
ExitApp
}
}
如果你想关闭特定的 window 而不做循环,我创建了以下内容:
DetectHiddenWindows, On
path = %A_Desktop%\Test.ahk - AutoHotkey v1.1.26.01
path2 = %A_Desktop%\Test2.ahk - AutoHotkey v1.1.26.01
WinClose, %path%
WinClose, %path2%
**注意 1:**文件名 +“-AutoHotKey blah blah blah”(这是当您打开隐藏在右下角的 window 时热键的 window 名称靠近时钟的角落)
**注意 2:**文件名必须区分大小写。
如果您想从 Windows 命令提示符中停止它,
停止所有自动热键脚本:
taskkill /im "autohotkey.exe"
停止特定脚本:
wmic process where "commandline like '%%MyScript.ahk'" delete
您也可以编写脚本 #SingleInstance force
并注意“-quit”参数或其他内容。
#SingleInstance force
#Persistent
If A_Args[1] == "--stop"
ExitApp
; just some random stuff for the script to do
count := 0
Loop,
{
count++
Tooltip, %count%
Sleep, 200
}
所以你 运行 再次使用相同的脚本,但带有参数。 BAM 消失了。
只是为了完整性。 @Stevoisiak 的回答已经很好地满足了要求的目的。
我也在寻找如何从另一个 autohotkey 脚本关闭一个特定的 运行 脚本,所以我尝试了 cristivaldo 的解决方案,但它对我来说不太有效,所以我稍微改变了它。
我添加了 SetTitleMatchMode, 2
所以它匹配 window 部分匹配的标题,所以你不必完全输入完整的 window 标题(这样它仍然会匹配甚至如果自动热键版本号发生变化)。我还删除了路径和变量。
这里有一个 stop/close 特定脚本的示例(只需将 examplescriptfile.ahk
更改为您希望停止的 运行 autohotkey 脚本的文件名):
DetectHiddenWindows, On
SetTitleMatchMode, 2
WinClose, examplescriptfile.ahk
1.go 到 windows 托盘
2.right-click在“H”标志上
3.click 关于“暂停热键”或“退出”
这是停止自动热键脚本最简单最简单的方法
但不要点击暂停脚本,否则重新映射的键将被关闭
此外,如果您暂停了热键,“H”将变为“S”
希望对您有所帮助。
我想你也可以按 CTRL+ALT+DEL