OnClipboardChange

OnClipboardChange() [v1.1.20+]

Registriert eine Funktion oder ein Funktionsobjekt, die bzw. das jedes Mal ausgeführt wird, wenn sich der Inhalt der Zwischenablage ändert.

OnClipboardChange(Func , HinzufügenEntfernen)

Parameter

Func

Ein Funktionsname oder Funktionsobjekt, die aufgerufen werden sollen. Die Parameter und der Rückgabewert der Funktion sind unten beschrieben.

HinzufügenEntfernen

Wenn dieser Parameter weggelassen wird oder leer ist, wird standardmäßig 1 (die Funktion nach anderen zuvor registrierten Funktionen aufrufen) verwendet. Ansonsten können Sie eine der folgenden Zahlen angeben:

Existiert ein OnClipboardChange-Label, wird das immer zuerst aufgerufen.

Func

FunktionName(Typ)
Typ

Enthält eine der folgenden Zahlen:

Rückgabewert

Ist dies die letzte bzw. einzige OnClipboardChange-Funktion, wird der Rückgabewert ignoriert. Ansonsten kann die Funktion einen Integer ungleich null zurückgeben, um zu verhindern, dass nachfolgende Funktionen aufgerufen werden.

OnClipboardChange-Label

Veraltet: Diese Vorgehensweise ist nicht für neue Skripte empfohlen. Verwenden Sie stattdessen die OnClipboardChange-Funktion.

Ein Label namens OnClipboardChange wird automatisch gestartet (falls vorhanden), sobald eine beliebige Anwendung (auch das Skript selbst) den Inhalt der Zwischenablage geändert hat. Das Label wird zudem beim Starten des Skripts einmal ausgeführt.

Die interne Variable A_EventInfo enthält eine der folgenden Zahlen:

Bemerkungen

Wenn die Zwischenablage geändert wird, während die Funktion oder das Label von OnClipboardChange läuft, geht das Benachrichtigungsereignis verloren. Falls das unerwünscht ist, können Sie Critical in der ersten Zeile des Labels nutzen. Allerdings werden dadurch auch andere Threads gepuffert/hinausgezögert (z. B. das Drücken eines Hotkeys), während der OnClipboardChange-Thread läuft.

Sobald das Skript selbst die Zwischenablage ändert, wird seine Funktion oder sein Label von OnClipboardChange normalerweise nicht sofort ausgeführt. Das heißt, dass Befehle unterhalb des Befehls, der die Zwischenablage geändert hat, wahrscheinlich vorher ausgeführt werden. Um die sofortige Ausführung der Funktion oder des Labels zu erzwingen, führen Sie nach dem Ändern der Zwischenablage eine kurze Verzögerung wie z. B. Sleep 20 durch.

Clipboard, OnExit(), OnExit, OnMessage(), RegisterCallback()

Beispiele

Funktion vs. Label.

Trotz der unterschiedlichen Herangehensweise haben beide Beispiele den gleichen Effekt: Sie zeigen jedes Mal, wenn sich die Zwischenablage ändert, kurz einen Tooltip an. Beachten Sie, dass die Funktion nicht aufgerufen wird, wenn das Skript zum ersten Mal startet; nur wenn sich der Inhalt der Zwischenablage ändert.

#Persistent
OnClipboardChange("ZwischenablageGeändert")
return

ZwischenablageGeändert(Typ) {
    ToolTip Datentyp der Zwischenablage: %Typ%
    Sleep 1000
    ToolTip  ; Schaltet den Tooltip aus.
}
#Persistent
return

OnClipboardChange:
ToolTip Datentyp der Zwischenablage: %A_EventInfo%
Sleep 1000
ToolTip  ; Schaltet den Tooltip aus.
return