昨天在调试我的AutoHotkey脚本时,我意外触发了一个MouseMove
和MouseClick
事件的无限循环。每0.5秒钟,我的鼠标会点击屏幕上的随机部分。
在尝试使用任务管理器终止AHK失败后,最终关闭了电脑来结束脚本。
如何停止正在运行的AutoHotkey脚本?
昨天在调试我的AutoHotkey脚本时,我意外触发了一个MouseMove
和MouseClick
事件的无限循环。每0.5秒钟,我的鼠标会点击屏幕上的随机部分。
在尝试使用任务管理器终止AHK失败后,最终关闭了电脑来结束脚本。
如何停止正在运行的AutoHotkey脚本?
结束活动脚本最可靠的方法是预先设置一个紧急ExitApp
热键。通常做法是将以下内容放置在任何脚本的底部。
Esc::ExitApp ; Exit script with Escape key
^!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+Delete,然后按 Alt+L 快速注销。
这是因为按下 Ctrl+Alt+Delete 会打开一个特殊的窗口,无法被 AutoHotkey 等程序操纵。
如果您可以控制键盘和鼠标,可以通过右键单击任务栏中 AutoHotkey 的绿色 H 图标并选择 "退出" 来结束脚本。
为了更通用的解决方案,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
}
}
如果你想让它更花哨并停止Windows命令提示符中的自动热键脚本,请使用以下命令停止所有自动热键脚本:
taskkill /im "autohotkey.exe"
使用以下代码停止特定的脚本:
wmic process where "commandline like '%%MyScript.ahk'" delete
截至Windows 10 21H1版本,WMIC已被弃用,因此以下PowerShell脚本将执行相应操作:
Get-WmiObject win32_process -Filter "commandline like '%%MyScript.ahk""'" |
ForEach-Object { $_.Terminate() }
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”(这是窗口名称,用于在您打开窗口时隐藏在右下角靠近时钟的热键)
注意2:文件名必须区分大小写。
#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
}
所以你再次运行相同的脚本,但加上参数。然后就完成了。
只是为了完整起见,@Stevoisiak的答案已经非常适合所需的目的。
1.前往Windows托盘
2.右键单击"H"标志
3.单击"暂停热键"或"退出"
这是停止AutoHotkey脚本最简单的方法
但不要点击 "暂停脚本",否则重新映射的按键将被关闭
此外,如果您已经暂停了热键,"H"将变成"S"
希望这有所帮助。
SetTitleMatchMode, 2
,以便匹配部分匹配的窗口标题,这样您就不必完全输入窗口标题(即使autohotkey版本号更改,它仍将匹配)。我还删除了路径和变量。examplescriptfile.ahk
更改为要停止的正在运行的autohotkey脚本的文件名):DetectHiddenWindows, On
SetTitleMatchMode, 2
WinClose, examplescriptfile.ahk
如果你在AutoHotkey脚本中意外触发了MouseMove和MouseClick事件的无限循环,不要担心,因为有几种方法可以停止这个恶意脚本。以下是如何在Windows操作系统上使用任务管理器进行操作:
步骤1:首先,按顺序按下Ctrl+Alt+Del键以调用Windows安全屏幕。
步骤2:一旦出现Windows安全屏幕,请选择“任务管理器”选项,但请注意,此操作可能需要几秒钟来加载。所以,请耐心等待。
步骤3:接下来,注意任务栏中在任务管理器图标之前出现的图标数量。假设在任务管理器图标之前有五个图标,则任务栏数字为任务管理器图标的6(5 + 1)。
步骤4:现在,按下Windows+Ctrl+(任务管理器图标任务栏数字)将任务管理器带到显示器的最前面。例如,如果任务管理器图标是任务栏中的第六个图标,则按下Windows+Ctrl+6。
步骤5:要将任务管理器窗口作为活动应用程序,您需要快速行动并快速单击它;否则,您将再次失去对计算机的控制。一旦它处于活动状态,您应该能够重新掌控系统。
步骤6:在任务管理器中搜索AutoHotkey进程时,请记住它通常位于“进程”或“详细信息”选项卡下,并且可能被称为“AutoHotkey.exe”或“AutoHotkey Unicode 64位”。如果您无法找到它,请尝试按名称或CPU使用率对列表进行排序,最终您会偶然发现它。
步骤7:在最后一步中,右键单击AutoHotkey进程并选择“结束任务”选项以终止脚本。
为确保将来不会出现此问题,请采取措施通过将保障措施纳入代码并在运行之前彻底测试脚本来防止无限循环。您还可以考虑向脚本添加热键,以便在出现问题时轻松终止它们。例如,您可以使用“Esc”键或自定义热键退出脚本。
我希望这个问题能够得到解决,我也明白这些说明可能比之前那个错误标记和删除的答案更难理解,但是通过明确地让文本变得更难理解,可以降低虚假的人工智能生成标记的概率。
我认为你也可以做CTRL+ALT+DEL
wmic process where "commandline like '%%MyScript.ahk'" delete
如果它无法正常工作,可能是其他问题,比如批处理文件无法正常工作,权限问题或其他问题。我建议您寻求朋友、老板或老师的帮助。 - PBeezy