1

Thema: Was sind Skripte und wofür kann ich sie verwenden (Beispiel)?

Was sind Skripte und wofür kann ich sie verwenden (Beispiel)?


Skripte verwenden eine programminterne Programmiersprache, die sehr ähnlich ist mit VisualBasic und mit deren Verwendung der Anwender Makros zur befehlsgesteuerten Abarbeitung von programminternen und -externen Abläufen definieren kann. Die so definierten Makros wiederum werden mittels Sprachbefehl während des Diktats aufgerufen.

Ihr Einsatz bietet sich immer dort an, wo routinemäßige und immer wiederkehrende, strukturell gleichartige Aufgaben anfallen. Der Aufwand, der benötigt wird, um solche Makros zu erstellen, wird sehr schnell durch Zeitersparnis, Wegfall von monotonen Arbeitsabläufen und insbesondere Minimierung von Fehleranfälligkeit aufgewogen.

Es erfordert zwar entweder programmiertechnische Vorkenntnisse oder aber ein hohes Maß an Lernbereitschaft für den Anfänger, komplexer strukturierte Makros zu erstellen, aber schon mit einfachen und auch für Anfänger leicht nachzuvollziehenden Skripten können bereits nützliche und im beruflichen Alltag unentbehrliche Hilfsmittel hergestellt werden, wie an einem Beispiel demonstriert werden soll.

Wer hat sich beispielsweise nicht schon oft darüber geärgert, dass man jedes Mal, wenn man ein Dokument in einer Textverarbeitung mittels "Speichern unter" anlegt, mehrmals klicken muss, bevor man ins richtige Verzeichnis gewechselt ist, und dann erst den Namen des Dokumentes in das Eingabefeld einfügen kann? Dies umso mehr, je komplexer die Verzeichnisstruktur ist, innerhalb derer man arbeitet. Für diese Aufgabe werden wir ein Makro erstellen, welches die einzelnen Schritte für uns automatisiert, die dann dadurch abgearbeitet werden, dass wir nur noch einen einzigen Befehl diktieren müssen.

Dabei werden wir die Umsetzung der einzelnen Schritte nacheinander so anschaulich erklären, dass auch ein Anfänger ohne Vorkenntnisse, sofern er bereit ist, uns gedanklich zu folgen, befähigt sein wird, aus diesem Beispiel bereits eine Menge ähnlicher, anwendungsorientierter Makros für den eigenen Gebrauch abzuleiten und zu erstellen.

Für unser Beispiel setzen wir voraus, dass die Textverarbeitung WordPerfect verwendet wird, wer andere Textverarbeitungssysteme einsetzt, sollte dennoch weiter lesen, mit nur sehr geringfügiger Änderung des Programmcodes lässt sich das Skript sehr leicht dafür anpassen.

Auch setzen wir voraus, dass sich der Anwender im entsprechenden Verzeichnis im Windows Explorer befindet, in dem das Dokument gespeichert werden soll. Eine weitere Voraussetzung ist, dass die Adresszeile im Windows Explorer angezeigt wird ("Ansicht > Symbolleisten > Adresszeile"), weiterhin, dass in der Adresszeile der vollständige Pfad angezeigt wird ("Extras > Ordneroptionen > Ansicht" - dort ziemlich weit unten).

Dies wird benötigt, um hieraus den Dateipfad zu kopieren, der später benötigt werden wird, um die Datei dort zu speichern. Aber der Reihe nach...


Erstellung eines Skripts zur automatisierten Dokumentanlage

Um einen benutzerdefinierten Befehl in Dragon NaturallySpeaking zu erstellen, wird der Befehlseditor benötigt - nicht zu verwechseln mit dem allgemeinen "Befehlscenter", wo alle Befehle, also auch die eingebauten, angezeigt werden. Der Befehlseditor ist aber ein Teil des Befehlscenters.

Der kürzeste Weg, um in den Befehlseditor zu gelangen, ist mittels Diktat: "Befehl erstellen" - oder über das Menü in der Dragon-Leiste "Extras > Neuen Befehl erstellen...".

So oder so sieht man ein Fenster, wo in der obersten Zeile der Name des Befehls, der frei wählbar ist, eingegeben werden kann. Bei benutzerdefinierten Befehlen ist es immer zu empfehlen, dass die Befehlsnamen einerseits leicht zu merken und zu diktieren, andererseits aber nur schwer zu verwechseln sein sollen. Hilfreich ist es auch, wenn sie mindestens aus zwei Wörtern bestehen, weil einzelne Wörter für sich genommen ansonsten auch sehr schnell als Diktat interpretiert werden können. Für unser Beispiel wählen wir als Befehlsnamen "starte Textdokument" und schreiben oder diktieren dies in die oberste Zeile des Befehlseditors. Die beiden unteren Felder darunter lassen wir so, wie sie sind. Wenn wir später feststellen, dass uns der Befehlsname nicht mehr gefällt, können wir ihn aber auch ganz leicht ändern, indem wir ihn einfach überschreiben.

Bei der Auswahl "Verfügbarkeit" müssen wir jedoch bereits Hand anlegen. Die Voreinstellung, dass der Befehl global verwendet werden kann, ist uns suspekt, wir wollen ihn ja nur für die Verwendung im Zusammenhang mit dem Windows Explorer definieren, und wählen deshalb die Option "Anwendungs-spezifisch".

Sobald wir dies markiert haben, öffnet sich darunter ein Listenfeld, wo alle derzeit laufenden Anwendungen aufgeführt sind. Da wir ja bereits den Windows Explorer gestartet haben (siehe oben), wird dieser auch dort aufgeführt, so dass wir ihn auswählen können. Von nun an wird unser Befehl nur dann ausgeführt werden können, wenn der Windows Explorer die aktive Anwendung ist - genauso wollten wir es haben.

Als nächstes wenden wir uns der Auswahl "Befehlstyp" zu. Wenn wir das Listenfeld daneben öffnen, werden dort vier verschiedene Befehlstypen angezeigt. Wir wählen die unterste, "Skripterstellung" - die Königsklasse!

Anschließend verändert sich sofort das Inhalt-Fenster darunter, jener Teil des Befehlseditors, wo der eigentliche Programmcode eingegeben wird. Nun stehen dort folgende Zeilen:

Sub Main
...
End Sub

Diese beiden Zeilen markieren den Anfang und das Ende eines jeden Skripts, dazwischen fügen wir die Zeilen des Programmcodes ein, aber bevor wir damit anfangen, müssen wir noch einen Moment innehalten und uns folgenden Sachverhalt vor Augen führen.

Für die meisten Dinge, die man mit dem Betriebssystem oder mit den Anwendungen machen kann, stehen bereits so genannte Hotkeys (einzelne oder zusammengesetzte Funktionstasten) zur Verfügung. Immer da, wo wir solche Hotkeys verwenden können, sollten wir sie nutzen, denn mit einem Skriptbefehl namens SendKeys können wir diese Tasten an die Anwendung versenden und die Tastenschläge auf diesem Wege simulieren.

Wie bereits oben ausgeführt, wir benötigen zunächst den vollständigen Dateipfad, also den Ort, wo die Datei gespeichert werden soll. Im geöffneten Windows Explorer mit angezeigter Adresszeile und vollständig angezeigtem Pfad in der Zeile können wir den Dateipfad daraus kopieren, und zwar mit folgenden Tasten: "Alt + s" (springt in die Adresszeile und markiert sie), gefolgt von "Steuerung + c" (kopiert die Markierung in die Zwischenablage). Die Ausführung dieser Tastenkombinationen werden wir nun in Skriptsprache umsetzen.

Die ersten beiden Zeilen unseres Programmcodes lauten dann wie folgt:

SendKeys "%s", 1
SendKeys "^c", 1

Dies bedarf einiger Erklärung. Was der Befehl SendKeys an sich bewirkt, haben wir bereits oben erklärt, er simuliert Tastenschläge und schickt die Tasten an die aktive Anwendung. Die Tasten, die simuliert werden sollen, müssen immer von doppelten Anführungszeichen eingeschlossen werden. Die übrigen Sonderzeichen in den beiden oberen Zeilen stehen für die Alttaste (%) beziehungsweise für die Steuerung-Taste (^) und stellen somit nur Abkürzungen dar. Die obere Zeile simuliert also "Alt + s", die untere Zeile dagegen "Steuerung + c".

Hinter jeder Zeile steht jeweils die 1, abgetrennt durch Kommata. Dies wiederum bewirkt, dass die nächste Zeile erst dann ausgeführt wird, wenn die vorangehende Zeile abgearbeitet ist - das Skript könnte sich sonst überschlagen und sich den Hals brechen!

An dieser Stelle sollte nur darauf hingewiesen werden, dass die Notationskonventionen sehr streng sind und unbedingt zu beachten sind, die beiden oberen Zeilen können zwar auch in anderer Weise notiert werden, in jedem Falle aber muss die Syntax peinlich genau eingehalten werden.

Bis jetzt haben wir also den Dateipfad in die Zwischenablage kopiert, von dort können wir ihn später in das Eingabefeld des Speichern-Dialogs der Textverarbeitung einfügen. Die Textverarbeitung selbst aber müssen wir noch starten, auch hierfür gibt es verschiedene Befehle, wir verwenden den folgenden:

AppBringUp "wpwin13"

gefolgt von

Wait 3

Auch das muss kurz erklärt werden. Die obere Zeile verwendet einen Befehl, der eine Anwendung startet oder, wenn sie schon gestartet ist, in den Vordergrund bringt. Der Name der Anwendung wird wiederum in Anführungszeichen angegeben. In unserem Beispiel haben wir das Kürzel der ausführbaren Datei angegeben, mithilfe derer WordPerfect in unserem System gestartet wird. Je nach Installation und System muss hier jedoch ein anderer Name verwendet werden. Dies muss im Einzelfall ausprobiert werden. Für andere Anwendungen, insbesondere bei Windows-Anwendungen, kann oft ein allgemeiner Name verwendet werden, beispielsweise "Microsoft Word", "Internet Explorer" usw.

Die untere Zeile ("Wait 3") bewirkt lediglich, dass eine Wartezeit von drei Sekunden eingefügt wird, bevor der folgende Programmcode ausgeführt wird. Dies ist insbesondere immer dann wichtig, wenn Anwendungen gestartet werden, die möglicherweise mit größerer Ladezeit verbunden sind. Für die Wartezeiten können ganzzahlige Werte oder Dezimalwerte verwendet werden, zum Beispiel bewirkt "Wait 0.5" eine Wartezeit von einer halben Sekunde.


Zur Sicherheit haben wir eine Pause von drei Sekunden festgelegt, dieser Wert muss jedoch dem jeweiligen System angepasst werden.

Wenn WordPerfect gestartet ist, müssen wir als nächstes den Speichern-Dialog aufrufen, über Funktionstasten erfolgte dies mit: "Alt + d" und "r". Wer bis hierhin mitgearbeitet hat, wird die folgende Codezeile vielleicht schon erahnen können:

SendKeys "%dr", 1

An diesem Beispiel erkennen wir, dass man mit einem einzigen SendKeys-Befehl auch mehrere Tasten hintereinander versenden kann.

Wenn der Speichern-Dialog geöffnet ist, muss als nächstes der Dateipfad in die Zeile "Dateiname" eingefügt werden. Hierbei nutzen wir den Umstand, dass diese Zeile standardmäßig immer aktiv ist und bereits vollständig markiert, so dass wir nun lediglich den Inhalt aus der Zwischenablage einfügen müssen.

Hierfür verwenden das Gegenstück zum oben angewandten Speichern-Befehl, nämlich die Tastenkombination "Steuerung + v", so dass wir mit folgender Zeile

SendKeys "^v“, 1


unser Ziel schon erreicht hätten - beinahe! Bevor wir nun den eigentlichen Dateinamen eingeben können, fehlt uns noch der Backslash, der als Trennzeichen zwischen Verzeichnis und Dateiname fungiert. Die obere Zeile müssen wir dazu noch einmal erweitern, nämlich wie folgt:

SendKeys "^v“ & "\", 1


Dies nur zur Erklärung: wenn verschiedene Codesorten, in diesem Falle Steuerzeichen und Klartext (hier "\"), miteinander kombiniert werden, müssen die verschiedenen Teile mit einem & verbunden werden. Die einzelnen Teile wiederum müssen jeweils in Anführungszeichen eingeschlossen werden; aus diesen Regeln ergibt sich die o.g. Notation.

Der besseren Übersicht halber fügen wir noch einmal alle Codezeilen untereinander, das komplette Listing sieht so aus:

SendKeys "%s", 1
SendKeys "^c", 1
AppBringUp "wpwin13"
Wait 3
SendKeys "%dr", 1
SendKeys "^v“ & "\", 1

Diese Zeilen müssen jedoch, wie bereits oben ausgeführt, zwischen Sub Main und End Sub im Inhalt-Fenster des Befehlseditors stehen.


Es gibt noch eine Vielzahl von Möglichkeiten, wie dieser Code ausgebaut und verfeinert werden kann, hier wurde lediglich der Kern vorgestellt. Beispiels¬weise können Benutzerabfragen eingebaut werden, etwa zur Angabe des Dateinamens, das Datum kann automatisch eingefügt werden usw. Die Erweiterungen und Kombinationen sind nahezu unbegrenzt.

Wer einen vollständigen Überblick über die Syntax und die weiteren Anwendungsmöglichkeiten der hier vorgestellten und aller weiteren zur Verfügung stehenden Befehle bekommen möchte, kann im geöffneten Befehlseditor und mit eingestelltem Befehlstyp "Skripterstellung" die Hilfe-Funktion aufrufen.

In der unteren Hälfte des danach geöffneten Fensters findet man eine Verknüpfung namens "Advanced Scripting Basic Language“, von wo aus man zu den entsprechenden Themen gelangt, die hier nach Gruppen sortiert sind. Oben links in der Menüleiste ist ein Pfeil zu sehen, wenn man darauf klickt, werden unter anderem die Index- und Such-Funktionen angezeigt, mit denen man gezielt nach den hier verwendeten Befehle suchen kann.

DPI 15 (15.00.000.076) auf Windows 8.1 (64-bit)
SpeechMike Premium (LFH3500) mit Philips Device Control Center (3.0)
Intel i7 2600 QuadCore - 3.4 GHz - 8 MB L3-Cache - 6 GB RAM