"CFW\(Daten)" für "Copy From Window", "WRT\[Daten] für
"WindowReadText", "RFS\[Daten] für "ReadFontSet", "RFG\[Daten] für "ReadFontGet". Siehe auch: "CFC\", "CFW\", "CTW\", "CFF\", "CTF\", "PFC\", "STT\".
Der Befehl "CFW\"
liest - sofern vorhanden - den Text des aktuellen Fensters und
speichert diesen - in der programminternen Stringvariablen "TempText" sowie in "$v1$", wenn Sie
den Datenteil leer lassen, oder - in einer Variablen,
wenn Sie im Datenteil den Namen einer Variablen angeben.
Diese Variable muß nicht vorher definiert werden. Wenn Sie den Datenteil mit
dem Zeichen "#" abschließen, wird - sofern
vorhanden - der selektierte Text des aktuellen Fensters gelesen. Die Stringvariable kann dann folgendermaßen weiterverarbeitet werden: - mit dem Befehl "CTC\ "
(Copy To Clipboard), - mit dem Befehl "CTF\..."
(Copy To File) oder - durch Zuweisung an eine Variable mit dem nachfolgenden Befehl "VAR\..."
oder - im Datenteil eines Befehl durch Einsetzen von "TempText" bzw. der Variablen
für den kopierten Inhalt. Beim "msctls_statusbar32"-Steuerelement
werden die Inhalte der einzelnen
Panels in programminterne Variable geschrieben wie folgt: - Der Text des ersten Panels wird in "TempText" und "$v1$" hinterlegt. Wenn Sie
im Datenteil eine Variable angegeben haben, wird diese mit dem Text des ersten Panels belegt. - die Texte der Panels 2 - 4 werden in die Variablen
"$v2$" bis "$v4$"
geschrieben, und - "$v5$" enthält die restlichen Texte, jeweils durch Senkrechtstrich ("|") getrennt.
Die Einzeltexte können Sie dann bei Bedarf mittels "SBD\" separieren. Anmerkung: Sie können die Variable "TempText" auch mehrmals im Datenteil eines Befehl
verwenden oder auch einer selbstdefinierten Variablen zuweisen (siehe auch
"VAR\"). Den Inhalt von "TempText"
können Sie sich im Editor mit dem Befehl "XTT\"
und einem Haltepunkt anzeigen lassen.
Mittels des Befehls "WRT\"
können Sie - mit gewissen Einschränkungen - Text
lesen, der mit anderen Befehlen nicht ermittelt werden kann, was in der Regel
dann der Fall ist, wenn das entsprechende Fenster die dazu notwendigen
Funktionen nicht unterstützt (z.B. Word-Dokumente). Der Befehl benutzt ein
grafisches Verfahren und kann nur einzeiligen Text lesen; bei mehrzeiligem Text
müssen Sie den Befehl wiederholt verwenden. Im Datenteil sind relative Koordinaten (x,y)
bezogen auf das aktuell lokalisierte
(Kind)Fenster in der Weise anzugeben, daß Sie einen Punkt vor und oberhalb
der Textzeile beschreiben. Wenn Sie keine diesbezüglichen Angaben machen,
wird der durch eine vorhergehende Lokalisierung bestimmte aktuelle Punkt
zugrundegelegt. Das kann durch Suchbefehle, eine Mustersuche oder Befehle wie
"SAP\", "MCP\",
"GOP\" o.ä. geschehen. Der Punkt soll möglichst dicht an der Zeile liegen, darf aber keinesfalls mit seiner
Projektion in die Zeile ragen. Beachten Sie bei der Festlegung die Tatsache, daß
die Oberkante einer Textzeile um einige Pixel über dem Kopf von
Großbuchstaben liegt. Der Punkt darf nach oben hin nicht in eine
darüberliegende Zeile hineinragen, nicht mehr als eine Zeilenhöhe über der zu
lesenden Zeile liegen und soll sich in einem freien Gebiet befinden, das nur die
Hintergrundfarbe aufweist. Optional können Sie nach den Koordinaten und
wiederum durch Komma abgetrennt noch die Länge in Pixel angeben, bis zu der
ausgehend vom Startpunkt gelesen werden soll (oder nur diesen Wert, wenn Sie
keine Koordinaten verwenden). Ist diese Länge nicht angegeben, versucht das
Programm, das Zeilenende zu ermitteln (als Zeilenende wird ein freier Raum
erkannt, der breiter ist als das breiteste Zeichen der Schriftart oder eine
senkrechte Linie, z.B. Fensterkante). Der gelesene Text
wird in einer programminternen Variablen hinterlegt, auf die
Sie mit der Zeichenfolge "$v1$" zugreifen können. Wenn Sie am Ende des
Datenteils das Zeichen ">" und danach einen Variablennamen angeben, wird der
Text direkt in diese Variable geschrieben. Normalerweise wird ausgehend von den angegebenen Koordinaten zuerst
versucht, den Textanfang (linke obere Ecke) zu finden. Das kann in manchen
Fällen zu Problemen führen, insbesondere dann, wenn der Text unmittelbar
unterhalb einer Kante liegt. Deshalb haben Sie die Möglichkeit, diese Suche
auszuschalten, indem Sie am Ende des Datenteils (nach einer eventuellen
Variablen) das Zeichen "<" eintragen. Dann müssen Sie allerdings die Suchlinie
zumindest bezüglich der Obenkoordinate exakt angeben. Weiterhin kann es
notwendig sein, das Suchfeld hinsichtlich der Höhe einzuschränken, wenn der
Text unmittelbar unter einer Kante liegt. Geben Sie dazu nach dem "<" noch
einen Pixelwert an, der die Schrift oben abschneidet und die Höhe verringert.
Diese Zusatzmaßnahmen lassen sich sinnvoll nur experimentell ermitteln. Um kontrollieren zu können, ob Ihre Koordinatenangabe korrekt ist, haben Sie
die Möglichkeit, am Ende des Datenteils ein "!" anzuhängen. Dann erscheint vor
dem eigentlichen Lesen eine Messagebox, und gleichzeitig wird in der linken
oberen Ecke des Bildschirms ein schwarz umrandetes "Foto" des Lesebereichs
sichtbar, wie er durch Ihre Angaben festgelegt wurde. Anhand des Fotos können
Sie diese Angabe anpassen. Nach dem Bestätigen der Messagebox verschwindet
das Foto, und der Lesevorgang wird ausgeführt. Wenn Sie die korrekten
Parameter ermittelt haben, entfernen Sie das "!".
Da der Befehl einen grafischen Vergleich durchführt, ist es notwendig, dem
Programm vorher die Parameter der Schrift mitzuteilen, mit welcher der
Vergleich durchgeführt werden soll. Dazu dient der Befehl "RFS\". Defaultmäßig
ist "MS Sans Serif" eingestellt mit einer Größe von 8,25 Pt, nicht fett, kursiv oder
unterstrichen. Das ist die am häufigsten verwendete Schrift, und zum Lesen
dieser brauchen Sie den Befehl "RFS\" nicht zu verwenden, sondern nur bei
anderen Parametern. Wenn Sie im Editor "RFS\" eingeben, erscheint der
Schriftarten-Dialog, und Sie können die Parameter auswählen. Nach Klick auf
"OK" werden die Parameter in die Befehlzeile übernommen.
Alternativ zur Vorgabe des Fonts können Sie diesen auch vom Programm
ermitteln lassen. Dazu dient der Befehl "RFG\...". Die Verwendung dieses Befehls
setzt voraus, daß Sie vom zu lesenden Fenster einen Text(teil) kennen. Dann ist
im Datenteil zunächst dieser Text (Groß/Kleinschreibung beachten) und
anschließend - abgetrennt durch einen Senkrechtstrich - der Suchbereich relativ
zum Ursprung des aktuellen Fensters anzugeben. Das geschieht mittels der
Koordinaten x und y
(obere linke Ecke des Suchbereichs) sowie Breite und Höhe des Suchbereichs, jeweils in Pixel und durch Komma getrennt. Der Suchbereich ist das Rechteck, in welchem der Vergleichsschriftzug liegt, und der durch die
Koordinaten x und y
beschriebene Punkt muß außerhalb der Schrift, aber
möglichst dicht an dieser in einem freien Bereich liegen. Zwischen diesem Punkt
und der Schrift dürfen keine Farbsprünge auftreten; der Punkt muß an einer
Stelle liegen, welche die Hintergrundfarbe der Schrift hat. Die gleichen
Bedingungen gelten für den Endpunkt, der durch Breite und Höhe vorgegeben
wird. Um optisch zu überprüfen, ob die Parameter korrekt gewählt sind, geben Sie am
Ende des Datenteils ein "!" an. Dann wird in der linken oberen Ecke des
Bildschirms ein schwarz umrandetes "Foto" des Vergleichsschriftzugs sichtbar,
und gleichzeitig erscheint eine Messagebox, so daß Sie in Ruhe das Foto
auswerten können. Nach der Auswertung bestätigen Sie die Messagebox, und das
Programm läuft weiter. Danach können Sie die Parameter ggf. korrigieren und
nach erfolgter Korrektur das "!" wieder entfernen. Wenn Sie diesen Befehl einsetzen, brauchen Sie den Befehl "RFS\..." nicht zu
verwenden; die Parameter werden dann automatisch auf die gefundene Schrift
gesetzt. Außerdem werden programminterne Variable mit Werten belegt, auf die
Sie mit den nachstehenden Zeichenfolgen Zugriff haben: $v2$ = Schriftname, $v3$ = Schriftgröße, $v4$ = Fett(True/False), $v5$ = Kursiv(True/False), $v6$ = Unterstrichen(True/False).
Beispiel: DVV\1+ STW\codesys_frame\ac1131 SWP\0,0|525,270 SPC\codesys_statusbar\* RFG\ONLINE|399,7,40,11 OPR\395,7 'RFS\$v2$|$v3$ WRT\120! @
© 2006 by Delphin Software
|