如何停止活动的AutoHotkey脚本?

您所在的位置:网站首页 苹果8plus如何结束正在进行的所有任务栏 如何停止活动的AutoHotkey脚本?

如何停止活动的AutoHotkey脚本?

#如何停止活动的AutoHotkey脚本? | 来源: 网络整理| 查看: 265

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

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

如何停止活动的AutoHotkey脚本?

添加紧急出口热键

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

1Esc::ExitApp  ; Exit script with Escape key

您还可以将热键设置为暂停,暂停或重新加载脚本。

123^!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图标并选择" Exit "

来结束脚本。

使用AHKPanic()结束所有活动脚本

对于更通用的解决方案,AHK用户None没有编写AHKPanic(),该方法可以暂停,挂起或终止所有其他正在运行的脚本。 (可选地结束调用它的脚本)

123456789101112131415161718192021222324252627AHKPanic(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命令提示符下停止它,

使用以下命令停止所有自动热键脚本:

1taskkill /im"autohotkey.exe"

使用以下命令停止特定脚本:

1wmic process where"commandline like '%%MyScript.ahk'" delete 相关讨论 我非常有兴趣让它工作。我正在尝试获取.bat脚本以停止运行一个ahk脚本表单,但是您的示例"使用以下命令停止特定脚本"似乎无法正常工作。 @KalamalkaKid确保在命令中包含%%。因此,如果您的脚本名为Run.ahk,则字符串应为'%% Run.ahk'。如果在命令提示符下键入wmic process,您将看到所有正在运行的进程,包括您的热键脚本,因此,您应该能够看到需要调用什么才能使其停止。 问题是我不想停止所有脚本,我只想停止某个脚本 是的,所以无论您调用什么脚本,都应将其放在单引号之间的字符串中,包括百分号。在我的示例中,将MyScript替换为Your Script的名称。 示例代码在我的答案中。 wmic process where"commandline like '%%MyScript.ahk'" delete如果它不起作用,则可能是其他问题,例如bat文件不起作用或权限问题。我建议您请朋友,老板或老师来帮助您。 谢谢..快问...该代码的delete部分会删除文件还是只是停止进程运行? 它停止或删除进程,而不是文件。

您还可以将脚本制作为#SingleInstance force,并注意"-quit "参数或其他内容。

1234567891011121314#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的回答对于所请求的目的已经非常有用。

如果要关闭特定窗口而不进行循环,则创建了以下内容:

123456789DetectHiddenWindows, 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 "(这是打开隐藏在靠近时钟的右下角的窗口时热键的窗口名称)

**注意2:**文件名必须区分大小写。

相关讨论 创建一个新的AHK ...不要将其添加到以前的ahk中。

我也在寻找如何从另一个自动热键脚本中关闭一个特定的正在运行的脚本的方法,因此我尝试了cristivaldo的解决方案,但它对我而言并不是很有效,因此我对其进行了一些更改。

我添加了SetTitleMatchMode, 2,因此它可以将窗口标题与部分匹配项进行匹配,因此您不必完全键入完整的窗口标题(这样即使自动热键版本号发生更改,它也仍然可以匹配)。我还删除了路径和变量。

这里是停止/关闭特定脚本的示例(只需将examplescriptfile.ahk更改为要停止的正在运行的自动热键脚本的文件名):

1234DetectHiddenWindows, On SetTitleMatchMode, 2 WinClose, examplescriptfile.ahk


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3