Vorweg:
Bitte das nächste Mal so ein Thema in dem folgenden Bereich eröffnen, da bekommst du schneller hilfe:
Coding
Also..
nein du brauchst dafür keine API.
Nehmen wir mal an du hast ein Script das folgendermaßen aussieht:
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
#Persistent
#SingleInstance, Force
Numpad0::
SendInput, tHallo Welt{Enter}
return
Alles anzeigen
Die erste Möglichkeit wäre, dass man beim Start der Anwendung eine Variable mit dem Wert Null setzt und diese bei jedem Hotkey abfragt.
Dafür nimmst du eine Taste z.B. Numpad9 und mit dieser setzt du dann die Variable immer auf den anderen Status.
Also wenn die Variable gleich Eins ist, soll sie zu Null geändert werden und anders herum, sowie eine Nachricht, wenn sich der Status verändert.
Bedenke aber hierbei, dass du dann für jeden Hotkey in deinem Script die ersten zwei Zeilen von der Numpad0 Taste einfügen musst.
Sollte dann so aussehen:
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
#Persistent
#SingleInstance, Force
KeybinderStatus := 0
Numpad9::
KeybinderStatus := !KeybinderStatus ;Setzt den Status auf Null bzw. Eins.
if(KeybinderStatus) ;Wenn der Status gleich Eins ist, also an.
{
SendInput, tDer Keybinder wurde aktiviert{Enter}
}
else ;Wenn der Status gleich Null ist, also aus.
{
SendInput, tDer Keybinder wurde deaktiviert{Enter}
}
Numpad0::
if(!KeybinderStatus) ;Wenn der Status gleich Null ist, wird direkt returnt.
return
SendInput, tHallo Welt{Enter}
return
Alles anzeigen
Die zweite Möglichkeit wäre die Funktion Suspend zu benutzen.
Dafür wird keine weitere Abfrage bei jeder Taste benötigt, da Autohotkey mit dieser Funktion alle Hotkeys und Hotstrings deaktiviert.
Kannst ja mal die Funktion hier nach lesen, wenn du mehr darüber wissen willst:
https://autohotkey.com/docs/commands/Suspend.htm#Parameters
Dafür nehme ich einfach wieder Numpad9 als Beispiel.
Ist vom Prinzip her fast genau so wie die erste Möglichkeit, also eigentlich einfach zu verstehen:
Numpad9::
Suspend
if(A_IsSuspended)
{
SendInput, tDer Keybinder wurde aktiviert{Enter}
}
else
{
SendInput, tDer Keybinder wurde deaktiviert{Enter}
}
Mit der Suspend Funktion lassen sich aber keiner Timer, für Killzähler o.ä. pausieren.
Am anfang eines Timers müsstest du dann folgendes schreiben:
MfG