Hier, en déboguant mon script AutoHotkey, j'ai accidentellement déclenché une boucle sans fin d'événements MouseMove
et MouseClick
. Toutes les 0,5 secondes, ma souris cliquait sur des parties aléatoires de l'écran.
Après avoir tenté sans succès de mettre fin à AHK avec le gestionnaire de tâches, j'ai fini par éteindre mon ordinateur pour mettre fin au script.
Comment puis-je arrêter un script AutoHotkey actif?
La méthode la plus fiable pour mettre fin à un script actif consiste à inclure de manière préventive un raccourci ExitApp
. Une pratique courante consiste à placer les éléments suivants au bas de tout script.
Esc::ExitApp ; Exit script with Escape key
Vous pouvez également définir des raccourcis clavier pour pause , suspendre , ou recharger votre 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
Sous Windows 10/8/7/Vista, vous pouvez vous déconnecter rapidement avec le raccourci clavier. Ctrl+Alt+Delete, suivi par Alt+L.
En effet, une pression sur les touches Ctrl + Alt + Suppr ouvre une fenêtre spéciale qui ne peut pas être manipulée par des programmes comme AutoHotkey.
Si vous avez le contrôle du clavier et de la souris, vous pouvez terminer le script en cliquant avec le bouton droit de la souris sur l'icône H verte d'AutoHotkey dans la barre des tâches et en sélectionnant "Quitter".
Pour une solution plus générique, l'utilisateur AHK, None a écrit AHKPanic()
, une méthode qui peut mettre en pause, suspendre ou tuer tous les autres scripts en cours d'exécution. (Termine éventuellement le script qui l'a appelé)
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
}
}
Si vous souhaitez fermer une fenêtre spécifique sans faire de boucle, j'ai créé ce qui suit:
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%
** REMARQUE 1: ** le nom du fichier + "- AutoHotKey blah blah blah" (nom de la fenêtre pour le raccourci clavier lorsque vous ouvrez la fenêtre cachée dans le coin inférieur droit de l'horloge)
** NOTE 2: ** Les noms de fichier doivent être sensibles à la casse.