How do I stop an active AutoHotkey script?
Solution 1
Add an emergency exit hotkey
The most reliable method of ending an active script is to pre-emptively include an emergency ExitApp
hotkey. A common practice is to place the following at the bottom of any script.
Esc::ExitApp ; Exit script with Escape key
You can also set hotkeys to pause, suspend, or reload your script.
^!p::Pause ; Pause script with Ctrl+Alt+P
^!s::Suspend ; Suspend script with Ctrl+Alt+S
^!r::Reload ; Reload script with Ctrl+Alt+R
Log off
On Windows 10/8/7/Vista, you can quickly log off with the keyboard shortcut Ctrl+Alt+Delete, followed by Alt+L.
This is because pressing Ctrl+Alt+Delete opens a special window which cannot be manipulated by programs like AutoHotkey.
End with taskbar icon
If you have control of the keyboard and mouse, you can end the script by right-clicking AutoHotkey's green H icon in the taskbar and selecting "Exit"
End all active scripts with AHKPanic()
For a more generic solution, AHK user None wrote AHKPanic()
, a method which can pause, suspend, or kill all other running scripts. (Optionally ends the script that called it)
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
}
}
Solution 2
If you want to get fancy and stop it from the Windows command prompt,
Stop all autohotkey scripts with:
taskkill /im "autohotkey.exe"
Stop specific script with:
wmic process where "commandline like '%%MyScript.ahk'" delete
Solution 3
If you want to close a specific window without doing a loop, I have created the following:
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%
**NOTE 1 : ** the file name + " - AutoHotKey blah blah blah" (This is the window name for hot key when you open the window hidden on your bottom right corner close to the clock)
**NOTE 2 : ** the file names have to be case sensitivity.
Solution 4
You could also make your script #SingleInstance force
and watch for a "-quit" argument or something.
#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
}
So you run the same script again but with the argument. And BAM its gone.
Just for completeness. @Stevoisiak's answer is already great for the purpose requested.😉
Solution 5
I was also looking for how to close one specific running script from another autohotkey script, so I tried cristivaldo's solution but it wasn't quite working for me, so I changed it a bit.
I added SetTitleMatchMode, 2
so it matches window titles with partial matches, so you don't have to type exactly the full window title (that way it will still match even if the autohotkey version number changes). I also removed the path, and variables.
Here's an example to stop/close a specific script (just change examplescriptfile.ahk
to the filename of the running autohotkey script you wish to stop):
DetectHiddenWindows, On
SetTitleMatchMode, 2
WinClose, examplescriptfile.ahk

Stevoisiak
Active programmer specializing in Python, SQL, C++, Java, and AutoHotkey. My goal is to make technology simpler to use by solving problems before users encounter them. That includes making easy-to-maintain code for anyone I collaborate with. (He/Him)
Updated on July 09, 2022Comments
-
Stevoisiak 11 months
Yesterday while debugging my AutoHotkey script, I accidentally triggered an endless loop of
MouseMove
andMouseClick
events. Every 0.5 seconds my mouse would click random parts of the screen.After unsuccessfully trying to terminate AHK with the task manager, I ended up turning off my computer to end the script.
How can I stop an active AutoHotkey script?
-
cristivaldo over 5 yearsCreate a new AHK... do not add it to previous ahk's.
-
Kalamalka Kid over 3 yearsim very interested in getting this to work. I am trying to get a .bat script to stop one ahk script form running, but your example "Stop specific script with" doesnt seem to work.
-
PBeezy over 3 years@KalamalkaKid Make sure you include the %% in your command. So if your script is called Run.ahk, the string should be '%%Run.ahk'. If you type wmic process in a command prompt, you'll see all the processes running, including your hotkey script, so you should be able to see what you need to invoke to make it stop.
-
Kalamalka Kid over 3 yearsThe thing is is I do not want to stop all scripts I only want to stop a certain script
-
PBeezy over 3 yearsRight, so whatever your script is called, put that in the string between the single quotes, including the percent signs. Replace MyScript in my example with the name of Your Script.
-
PBeezy over 3 yearsThe example code is in my answer.
wmic process where "commandline like '%%MyScript.ahk'" delete
If it's not working, it might be some other problem, like the bat file not working or permissions issue or something. I recommend you ask a friend, or your boss, or your teacher to help you with it. -
Kalamalka Kid over 3 yearsThanks.. quick question... does the delete portion of this code delete the file or simply stop the process from running?
-
PBeezy over 3 yearsIt stops, or deletes, the process, NOT the file.