web-dev-qa-db-fra.com

Comment puis-je arrêter un script AutoHotkey actif?

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?

7

Ajouter une touche d'urgence de sortie d'urgence

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

Se déconnecter

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.

Terminer avec l'icône de la barre des tâches

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".

Exit script from taskbar

Terminez tous les scripts actifs avec AHKPanic ()

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
  }
}
11

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.

1
cristivaldo