如何停止活动的AutoHotkey脚本?

Ste*_*ica 13 autohotkey

昨天在调试我的AutoHotkey脚本时,我意外地触发了无限循环MouseMoveMouseClick事件.每0.5秒我的鼠标会点击屏幕的随机部分.

在尝试使用任务管理器终止AHK失败后,我最终关闭了计算机以结束脚本.

如何停止活动的AutoHotkey脚本?

Ste*_*ica 20

添加紧急出口热键

结束活动脚本的最可靠方法是先发制人地包含紧急ExitApp热键.通常的做法是将以下内容放在任何脚本的底部.

Esc::ExitApp  ; Exit script with Escape key
Run Code Online (Sandbox Code Playgroud)

您还可以设置热键以暂停,暂停重新加载脚本.

^!p::Pause    ; Pause script with Ctrl+Alt+P
^!s::Suspend  ; Suspend script with Ctrl+Alt+S
^!r::Reload   ; Reload script with Ctrl+Alt+R
Run Code Online (Sandbox Code Playgroud)

注销

在Windows 10/8/7/Vista上,您可以使用键盘快捷键Ctrl+ Alt+ 快速注销Delete,然后按Alt+ L.

这是因为按Ctrl + Alt + Delete会打开一个特殊窗口,而AutoHotkey等程序无法操作该窗口.

以任务栏图标结束

如果你有键盘和鼠标的控制,您可以结束通过右键单击AutoHotkey的绿色和H图标在任务栏,然后选择"退出"的剧本

从任务栏退出脚本

使用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
  }
}
Run Code Online (Sandbox Code Playgroud)


PBe*_*ezy 6

如果你想在 Windows 命令提示符下停止它,

停止所有自动热键脚本:

taskkill /im "autohotkey.exe"
Run Code Online (Sandbox Code Playgroud)

停止特定脚本:

wmic process where "commandline like '%%MyScript.ahk'" delete
Run Code Online (Sandbox Code Playgroud)