Steuerbefehle

In ZCopy gibt es eine große Anzahl an Steuerbefehlen, mittels welcher sich viele Aktionen steuern lassen. Steuerbefehle werden generell in eine Raute (#) eingeschlossen, sprich sowohl vor als auch nach dem Befehl kommt eine Raute (z.B. #TAB# oder #Strg-A#). Wollen Sie irgendwo im Text eine Raute darstellen, schreiben Sie im Text zwei Rauten hintereinander (also ##), da es ansonsten zu Fehlermeldungen kommt. Die Groß- und Kleinschreibung spielt bei den Steuerbefehlen keine Rolle.

Hinweis: Ich empfehle, die Steuerbefehle nicht per Hand einzugeben, sondern die Schaltfläche "Makro bearbeiten" in dem Fenster "Benutzerdefinierte Makros" zu benutzen, um Schreib- und Syntaxfehler zu vermeiden.

Die meisten Steuerbefehle können mehrfach hintereinander verwendet werden, indem man einfach die gewünschte Zahl und ein * davorschreibt (z.B. #8*Shift-Tab# um 8 Mal hintereinander Shift-Tab zu simulieren). Ausnahmen sind z.B.  Maussimulationen, Programmaufrufe / -wechsel, Datum, Zeit und das Standardkürzel.

Die Steuerbefehle unterteilen sich in verschiedene Rubriken:

nach oben


Tastensimulationen

Mittels der Tastensimulationen können praktisch alle Tastenkombinationen per Makro ausgelöst werden. Normalen Text müssen Sie natürlich nicht über die Tastenkombinationen eingeben, sondern können ihn direkt zwischen die im Programm blauen Steuerbefehle schreiben. Das einzige "normale" Zeichen, welches Sie über einen Steuerbefehl ansprechen müssen, ist die Raute (#), da diese - wie oben bemerkt - als Erkennungszeichen für Steuerbefehle gilt. Um die Raute zu bekommen, geben Sie einfach den Steuerbefehl ## ein 

Die Buchstaben A bis Z, die Zahlen 0 bis 9 sowie alle Zeichen aus der unten stehenden Tabelle können mit einer oder mehreren der folgenden Statustasten kombiniert werden:

Zwischen den Statustasten und der zu drückenden Taste kommt ein Bindestrich, mehrere Statustasten werden ohne Bindestrich o.ä. hintereinander weggeschrieben. Beispiel #Strg-C# oder #StrgShift-Pos1# (gesamten Text bis zum Seitenanfang markieren).

Die obigen Statustasten können auch als Einzeltasten angesprochen werden. In diesem Fall muß die Taste mittels z.B. #Strg# gedrückt und hinterher mittels #/Strg# wieder losgelassen werden. Wenn Sie also z.B. die Dauergroßschreibung simulieren wollen, geben Sie ein: #Shift#2test2#/Shift# und erhalten als Ergebnis "TEST" (die 2 mit Shift gedrückt ergibt "). Falls Sie vergessen, eine Statustaste mittels #/statustaste# wieder loszulassen, wird die Taste in jedem Fall am Ende des Makros wieder losgelassen, Sie müssen also nicht befürchten bis zu Ihrem Lebensende mit gedrückter Shift leben zu müssen.

Notwendig ist diese Verfahrensweise, wenn Sie Tastenkombinationen mit Sonderzeichen wie z.B. Punkt oder Komma nutzen möchten. Mangels entsprechender Unterstützung durch Windows, müssen diese in dem oben beschriebenen Weg simuliert werden. Alt-Komma lösen sie demzufolge über den Befehl #Alt#,#/Alt# aus. Es dürfte allerdings nur sehr wenige Programme geben, die solche Kombinationen einsetzen.

Wenn Sie das Startmenü (unten links) aufklappen wollen, können Sie dies sowohl über den Befehl #win##/win# als auch über #Strg-Esc# erreichen.

Steuerbefehl Alternative Wirkung
#TAB#

Tabulator-Taste
#RETURN# #ENTER# Enter-Taste - ist zwingend nötig, wenn ganz am Ende des Makros noch ein Enter nötig ist, ansonsten kann man auch einfach im Makro einen Zeilenumbruch machen
#BACKSPACE# Backspace (Rückschritt), die Taste oberhalb von Enter, löscht das Zeichen links vom Cursor
#PAUSE#

Pause-Taste (auf einer Standardtastatur rechts von F12)
#SNAPSHOT# #DRUCK# macht einen Screenshot (Bildschirmfoto) und kopiert diesen in die Zwischenablage von Windows; mit #Alt-Druck# wird nur das gerade aktive Fenster "fotografiert".
#WIN#

die Windowstaste (die mit dem Fensterlogo zwischen Strg und Alt), bleibt gedrückt, bis mittels #/WIN# wieder losgelassen
#SHIFT#

Umschalttaste (für einzelne Großbuchstaben), bleibt gedrückt, bis mittels #/SHIFT# wieder losgelassen
#CTRL# #STRG# Steuerungstaste Strg; bleibt gedrückt, bis mittels #/STRG# wieder losgelassen
#MENU# #ALT# Alt, Alt-Gr wird über Strg und Alt simuliert, das @-Zeichen kann man also über den Steuerbefehl #StrgAlt-Q# simulieren oder alternativ direkt in den Text schreiben.

Bleibt gedrückt, bis mittels #/ALT# wieder losgelassen

#ESCAPE#

Escape-Taste (ESC)
#SPACE# #LEER# Leerzeichen
#PRIOR# #BILDAUF# Bild-auf
#NEXT# #BILDAB# Bild-ab
#END# #ENDE# Ende (springt zum Zeilenende)
#HOME# #POS1# Position 1 (Zeilenanfang)
#INSERT# #EINFG# Einfügen
#DELETE# #ENTF# Entfernen (löscht Zeichen rechts vom Cursor)
#LEFT# #LINKS# Pfeiltaste nach links
#UP# #HOCH# Pfeiltaste nach oben
#RIGHT# #RECHTS# Pfeiltaste nach rechts
#DOWN# #RUNTER# Pfeiltaste nach unten
#MULTIPLY# #MULTIPLIKATOR# das * im Ziffernblock
#ADD# #PLUS# das + im Ziffernblock
#SUBTRACT# #MINUS# das - im Ziffernblock
#DECIMAL# #KOMMA# das , im Ziffernblock
#DIVIDE# #DIVIDIEREN# das / im Ziffernblock
#NUMPAD0#

bis #NUMPAD9#

entsprechende Taste im Ziffernblock
#F1#

bis #F12#

die entsprechende Funktionstaste (F1-F12)
#ANYKEY#   wer hat die nicht schon auf seiner Tastatur gesucht :-))
 

Auch die Statustasten Numlock (Ziffernblock), Capslock (Dauergroßschreibrung) und Rollen können mittels Steuerbefehl wahlweise aktiviert bzw. deaktiviert werden. Zum Aktivieren wird dem Steuerbefehl ein Doppelpunkt und "On" angehängt (also z.B. #Numlock:On#), zum Ausschalten folgerichtig Off (#Rollen:Off#)

#NUMLOCK:[On/Off]># #NUM:[On/Off]># Numlock (Taste links oben im Ziffernblock); aktiviert / deaktiviert die Zahleneingabe über den Ziffernblock.
#SCROLL:[On/Off]># #ROLLEN:[On/Off]># Rollentaste, wird in nahezu keinem Programm genutzt, der Vollständigkeit halber aber vorhanden.

Der Befehl kann auch genutzt werden, wenn in den Optionen aktiviert ist, daß das Halten von Rollen die Makroausführung abbricht.

#CAPITAL:[On/Off]># #CAPSLOCK:[On/Off]># schaltet die DAUERGROßSCHREIBUNG ein bzw. aus.

nach oben


Maussimulation

Im Gegensatz zur Simulation vom Tastenanschlägen, ist es nicht möglich, bei der Maussimulation eine Anzahl vor den Befehl zu stellen. #2*MouseMove:10,10# funktioniert also nicht (wäre auch sinnlos), könnte aber wenn doch gewünscht, erreicht werden, indem man den Befehl einfach doppelt ins Makro schreibt. Es gibt drei grundsätzliche Mausbefehle.

Ziel Steuerbefehl Alternative
1.) Mausbewegung #MouseMove:x,y#
2.) Mausklick an aktueller Position #<L/M/R>MouseClick# #<L/M/R>MausKlick#
3.) Mausklick an angegebener Position #<L/M/R>MouseClick:x,y# #<L/M/R>MausKlick:x,y#

Wenn eine Bewegung erwünscht ist (1 und 3), ist durch den Vorsatz der Silbe "Rel" eine Mausbewegung relativ zur aktuellen Position möglich. Falls die angegebenen Koordinaten bei einer absoluten Bewegung negativ sind, beziehen sie sich auf die rechte untere Ecke (statt links oben).

Beispiele:
#MouseMove:100,100# bewegt die Maus an Position 100, 100 (jeweils von der linken oberen Ecke betrachtet)
#RelMouseMove:-10,10# bewegt die Maus 10 Pixel nach links und 10 Pixel nach unten (also an Position 90, 110)
#MouseMove:-100,-100# bewegt die Maus an Position 924, 668 (bei Auflösung 1024*768; je 100 Pixel von unten rechts)
#MouseMove:100,-100# bewegt die Maus an Position 100, 668  (x ist positiv also von links oben, y ist negativ also rechts unten)

Bei Mausklicks wird die Maustaste (L = links, M = Mitte, R = rechts) immer unmittelbar vor dem MausKlick-Befehl angegeben. Wird ein Doppelklick gewünscht, ist vor dem L/M/R das Wort Doppel bzw. Double einzufügen.

Beispiele:
#LMouseClick# - Klick mit der linken Maustaste an der aktuellen Position
#DoppelRMausKlick:100,100# - Doppelklick mit der rechten Maustaste an Position 100, 100
#RelMMausKlick:10,10# - bewegt die Maus 10 Pixel nach rechts und unten und klickt dort mit der mittleren Taste
#RelDoubleLMouseClick:10,-10# - bewegt die Maus je 10 Pixel nach rechts oben und macht dort einen Doppelklick mit links.

nach oben


feste Texte und Makros

Es ist möglich, ein Makro aus einem anderen heraus aufzurufen. Wenn Sie z.B. in Makro 1 einen bestimmten Teilschritt einer Aufgabe "programmiert" haben, und in Makro 2 sowohl eigene Befehle als auch den kompletten Teilschritt 1 benötigen, können Sie an der gewünschten Stelle in Makro 2 einfach den Befehl #Makro:1# schreiben. Da hier auch die Vorgabe einer Anzahl möglich sind, können Sie auch Makro 1 10 mal hintereinander aufrufen: #10*Makro:1#. Wenn versucht wird, ein Makro in sich selber aufzurufen (wenn Sie also in Makro 1 den Befehl #Makro:1# schreiben), erzeugt dies eine Fehlermeldung und die Ausführung des Makros wird abgebrochen. 

Sinnvoll ist diese Verfahrensweise, wenn sich eine Aufgabe in Teilaufgaben zerlegen läßt, welche aber auch einzeln benötigt werden.

Beispiel: Teilaufgabe 1 (in Makro 1 definiert): Briefkopf und Anrede schreiben; Teilaufgabe 2 (Makro 2) einen Standardabsatz (danke für Ihr Schreiben ...) schreiben. Da der Standardabsatz normalerweise nicht ohne Briefkopf / Anrede verwendet wird (es aber auch Anschreiben ohne den Standardabsatz gibt), ruft man zu Beginn des Makros 2 Makro 1 auf, schreibt also in Makro 2: "#Makro:1#vielen Dank für Ihr Schreiben ..."

Dadurch wird bei Aufruf von Makro 2 zuerst der in Makro 1 definierte Briefkopf und der Dank für das Schreiben erzeugt.

Der Zweck der in den Programmoptionen einstellbaren sogenannten Festen Texte ergibt sich, wenn (z.B. in Firmen) die gleichen Makros von mehreren Personen eingesetzt werden und irgendwo in dem Makro der Name des Anwenders, seine Abteilung, Telefonnummer oder sonstige personenspezifische Daten vorkommen. Damit nicht jeder das Makro bearbeiten muß und somit die Erstellung und Verteilung der Makros vereinfacht wird, setzt man an Stelle des jeweiligen Namens den Steuerbefehl #FText:1# (bis zu 6 feste Texte sind möglich) ein und trägt den Namen des Anwender in den Optionen als festen Text ein. Auch feste Texte können mehrfach aufgerufen werden, in unserem Beispiel würde #2*FText:1# den Namen eben zweimal eintragen (bei Namen ist das in der Mehrzahl der Fälle sicher sinnlos, aber man kann ja auch feste Texte definiert haben, bei denen dies in bestimmten Situationen angebracht ist).

nach oben


Pause und Signalton

Eine einfache Pause läßt sich über den Befehl #Warten:x# bzw. #Wait:x# realisieren. Statt x tragen Sie die gewünschte Wartezeit in Millisekunden ein, #Wait:5000# würde also 5 Sekunden warten, bevor mit der Ausführung des Makros fortgefahren wird. Notwendig können Pausen sein, wenn Sie in z.B. durch Betätigung der Enter-Taste (#Enter#) oder einen Mausklick (#LMausKlick#) eine Aktion ausgelöst haben, welche etwas Zeit benötigt. Auch wenn Sie den Befehl #RunProg:<programm>|<parameter># nutzen, ist es sinnvoll, eine Pause zu machen, da der Programmstart oftmals einige Sekunden benötigt (wie viele hängt vom Programm und Ihrem PC ab). Verwechseln Sie den Befehl nicht mit #Pause# - das würde die Pausetaste auf der Tastatur simulieren. Der Warten/Wait-Befehl kann nicht durch das vorgeben einer Anzahl wiederholt werden, Sie sollten statt dessen einfach die Millisekunden erhöhen (#3*wait:1000# würde also auch nur 1 Sekunde warten).

In den Programmoptionen läßt einstellen, wie viele Millisekunden zwischen dem Auslösen jedes Tastendruckes bzw. Steuerbefehles gewartet werden muß. Normalerweise kann dieser Wert auf 0 stehen, auf einigen langsameren Systemen oder in einigen Programmen kann es aber notwendig sein, den Wert zu erhöhen, da ansonsten Tastenanschläge verlorengehen (also Buchstaben fehlen) oder einfach ins leere laufen, da das Programm zu langsam reagiert. Sie können den eingestellten Wert auch direkt für ein einzelnes Makro modifizieren, wenn nur in diesem eine höhere (oder auch geringere) Verzögerung benötigt wird. Dazu nutzen Sie den Befehl #MakroWaitTime:xx# bzw. #MakroWarteZeit:xx#

Statt xx tragen Sie den Wert ein, um den Sie die Wartezeit aus den Programmoptionen erhöht bzw. bei negativen Werten reduziert wird. 

Beispiele (in den Optionen ist eine Wartezeit von 100 ms eingestellt):
#MakroWaitTime:50# - Wartezeit ist jetzt 150 ms
#MakroWaitTime:-100# - Wartezeit ist jetzt 0
#MakroWaitTime:50# xxx #MakroWaitTime:-50# - Wartezeit wird erst auf 150 ms erhöht, dann auf 50 ms gesenkt, da nicht vom letzten Wert sondern immer von dem in den Optionen eingestellten 100 ms ausgegangen wird
#MakroWaitTime:50# xxx #MakroWaitTime:0# - Wartezeit ist jetzt wieder 100 ms (100 ms aus Optionen + 0 = 100)

Der Befehl #beep# macht, was der Name vermuten läßt - er gibt einen einfachen Piepton über die Lautsprecher aus. Sinnvoll ist dies, wenn Sie akustisch über den Abschluß eines Makros oder einen bestimmten Zwischenschritt informiert werden wollen. Der Beep-Befehl läßt sich auch mehrfach aufrufen (#3*beep#).

nach oben


Programmaufruf / Programmwechsel

Per Makro können beliebige Programme auf dem PC gestartet oder zu bereits gestarteten gewechselt werden.

Der Programmaufruf erfolgt über den Befehl #RunProg:<programm>|<parameter>#. Bei Programmen, die sich im automatischen Suchpfad des PCs (also z.B. im Windows bzw. System / System32-Verzeichnis) befinden, muß der Pfad nicht mit angegeben werden. Den Windowstaschenrechner können Sie also sowohl über den Befehl #RunProg:calc.exe# als auch mittels#RunProg:c:\Windows\calc.exe# starten. 

Wenn das gewünschte Programm die Angabe von Startparametern benötigt, können diese mittels senkrechtem Strich | vom Dateinamen getrennt angegeben werden. In den Parametern darf auch ein | vorkommen, dies wird dann korrekt an das Programm übergeben. Beispiel: #RunProg:explorer.exe|d:\# würde den Windowsexplorer mit dem Laufwerk d: (sofern vorhanden) starten. Nach dem Programmaufruf empfehle ich die Verwendung des Wait-Befehls.

Um zu einem anderen Programm zu wechseln nutzen Sie den Befehl #SwitchProg:<fenstertitel># bzw. #ProgrammWechsel:<fenstertitel>#. Statt <fenstertitel> tragen Sie einfach einen Teil des jeweiligen Fenstertitels ein (es genügt z.B. Excel statt Microsoft Excel - Mappe1). Falls der angegebene Fenstertitel mehrfach vorkommt, Excel also mehrfach gestartet ist, wird zum zuletzt aktiven Fenster mit dieser Bezeichnung gewechselt. Der Befehl #SwitchProg:Excel# würde also zu dem Excelfenster wechseln, in dem Sie zuletzt gearbeitet haben.

Wichtig: Bei dem Fenstertitel wird Groß- und Kleinschreibung beachtet!

nach oben


Datum / Zeit

Das aktuelle Datum und die aktuelle Zeit lassen sich am einfachsten über #date# bzw. #time# einfügen. Auch die deutschen Befehle #Datum# #Zeit# funktionieren Das Ergebnis sähe dann z.B. so aus: 29.07.03 08:46:35

Neben diesen beiden Befehlen lassen sich Datum bzw. Zeit auch in die Einzelelemente (Tag, Monat, Jahr etc.) aufteilen. Möglich sind folgende Befehle:

Befehl Alternative Wirkung
#Wochentag# #DayOfWeek# liefert den Wochentag im Langformat (z.B. Montag), bei Verwendung von #DayOfWeek# wird die englische Bezeichnung (z.B. Monday) verwendet
#SWochentag# #SDayOfWeek# Wochentag im Kurzformat (z.B. Mo), #SDayOfWeek# liefert englisch mit den ersten 3 Buchstaben (z.B. Tue, Wed, Thu)
#Tag# #Day# Tag im Kurzformat (z.B. 1 oder 20)
#2Tag# #2Day# Tag mit führender 0 (z.B. 01 oder 20)
#Monat# #Month# Monat als Zahl ohne führende 0
#2Monat# #2Month# Monat als Zahl mit führender 0 (z.B. 01 oder 04)
#KMonat# #SMonth# Monat im Kurzformat (z.B. Jan, Feb), bei Verwendung von #SMonth# wird die englische Bezeichnung genommen (z.B. Mar, May, Oct)
#LMonat# #LMonth# Monat im Langformat (z.B. Januar, Februar), bei Verwendung von #LMonth# wird die englische Bezeichnung genommen (z.B. March, October)
#Jahr# #Year# Jahr im Langformat (z.B. 1999, 2003)
#2Jahr# #2Year# Jahr im Kurzformat (z.B. 99, 03)
#Stunde# #Hour# Stunde mit führender 0 
#1Stunde# #1Hour# Stunde ohne führende 0
#Minute#   Minute mit führender 0 
#1Minute#   Minute ohne führende 0
#Sekunde #second# Sekunde mit führender 0 
#1Sekunde# #1second# Sekunde ohne führende 0

Wenn Sie nicht das aktuelle Datum bzw. die aktuelle Zeit benötigen, kann der Befehl um einen Doppelpunkt, die Angabe der Zeitdiffernz sowie eine Einheit ergänzt werden. Bei negativen Zahlen wird der Wert vom aktuellen Datum / Zeit abgezogen, sonst addiert. Die möglichen Zeiteinheiten entnehmen Sie der folgenden Tabelle.  

Einheit entspricht Beispiel
d oder t Tag #Datum:14d# - heute in 14 Tagen
m Monat  #date:-1m# - heute vor einem Monat
y oder j Jahr #jahr:2j# - bringt im Jahr 2003 "2005" als Ergebnis
h Stunde #time:3h# - in 3 Stunden
n Minute #Stunde:90n# - die Stunde in 1,5 Stunden (wenn 16.17 aufgerufen also 17; um 16.35 kommt 18 (18.05 Uhr) als Ergebnis)
s Sekunde #monat:60s# bringt am 31.12. 23.59 Uhr aufgerufen 1

Es können auch mehrere Einheiten / Zeitwerte angegeben werden. #Zeit:2h45n# gibt die Zeit in 2 Stunden und 45 Minuten aus. Es muß für jede Einheit separat angegeben werden, ob addiert oder subtrahiert werden soll. Wollen Sie also die Zeit von vor 23 Stunden, können Sie entweder #time:-23h# schreiben oder alternativ #Zeit:-1d1h# verwenden. Im letzteren Fall würde ein Tag abgezogen und eine Stunde addiert werden. Um von einem Datum ein Jahr und einen Tag abzuziehen, müssen Sie demzufolge #Datum:-1j-1d# schreiben.

Wir eine Zeiteinheit nicht erkannt wird, weil z.B. Buchstaben, Sonderzeichen oder falsche Einheiten angegeben wurden, wird diese ignoriert, andere korrekte Zeiteinheiten werden hingegen berücksichtigt. Wird vergessen eine gültige Einheit anzugeben, wird das aktuelle Datum / Zeit zurückgegeben.

Beispiel: 

Es ist möglich, bei den Zeit-Befehlen Tag, Monat oder Jahr anzugeben, doch dürfte dies - da Sommer- / Winterzeit (im Gegensatz zu Schaltjahren) nicht berücksichtigt wird - selten sinnvoll sein. Umgekehrt kann auch bei den Datums-Befehlen eine Zeit-Einheit angegeben sein, wenn Sie z.B. den Wochentag in 6 Stunden benötigen, geben Sie einfach #WochenTag:6h# ein.

nach oben


Standardkürzel

Das sogenannte Kürzel ( /name 31.12.03 23.59 Uhr) wird durch den Befehl #k# eingefügt. Das Kürzel dient / diente mir ursprünglich der Signierung von Arbeitprotokollen, wer es nicht für diese oder ähnlich Zwecke benötigt, kann den Hotkey dafür in den Optionen deaktivieren.

nach oben