Moin,
ich muss zugeben, dass ich bisher kaum Hotstrings benutzt und deshalb auch kaum eigene praktische Erfahrung damit habe. Sei's drum!
Mit der
Hotstring() Funktion werden im Normalfall die 'sogenannten automatisch-ersetzenden' Hotstrings erzeugt, die sonst im Script in einer Zeile stehen. Wenn stattdessen eine Subroutine (Label) oder eine Funktion aufgerufen werden sollen, muss in den Hotstring-Optionen ein
X (execute/ausführen) stehen. Eine Funktion muss als Funktionsobjekt
Func("MeineFunktion") angegeben werden. Der Rückgabewert der Funktion wird dabei nicht beachtet. Wenn ein Text ausgegeben werden soll, muss er wie in einer Subroutine mit einer der
Send... Anweisungen abgeschickt werden. Die folgenden zwei Hotstring-Definitionen sind deshalb im Kern identisch:
Code: Select all
; 1:
:*:is#::Inhalt ist `r und wird `rweiterbearbeitet`r%Clipboard%
; 2:
Hotstring(":*:is#", "Inhalt ist `r und wird `rweiterbearbeitet`r" Clipboard)
- Die 'statische' Definition wird bereits beim Einlesen des Skripts verarbeitet, alles rechts vom Hotstring wird als 'einfacher Text' betrachtet.
- Die 'dynamische' Definition wird erst während der Ausführung des Skripts abgearbeitet. Wie alle Funktionsparameter wird auch der Parameter Ersatz/Replacement als Ausdruck behandelt. Enthaltene Variablen oder Funktionsaufrufe werden dabei direkt aufgelöst und landen auch direkt in dem während der Ausführung der Hotstring() Funktion einmalig dynamisch generierten Ersetzungstext.
D.h., die Variable
Clipboard wird in Deinem
Hotstring() Beispiel genau dann ausgelesen, wenn die Funktion im Scriptablauf erreicht wird.