Steuerung über OLE
UmlauteKonverter stellt über OLE folgende Funktionen zur Verfügung:
CString AutodetectTextType(LPCTSTR lpszName, LPCTSTR lpszRegKey, LPCTSTR chBuf, long ulLength);Mit dieser Funktion kann das Format eines Textes ermittelt werden.CString ConvertText(LPCTSTR lpszName, LPCTSTR lpszRegKey, LPCTSTR lpszSrc, long ulSrcLength, long ulSrcType, long ulDestType);
Die Werte für lpszName und lpszRegKey erhalten Sie, wenn Sie sich registrieren. Für Testzwecke oder falls ihr Programm Freeware ist, können Sie hier auch NULL oder leere Strings übergeben. In diesem Fall meldet sich UmlauteKonverter hie und da mit einem entsprechenden Hinweis.
chBuf zeigt auf den Text, dessen Format bestimmt werden soll, und ulLength beinhaltet die Länge dieses Textes (inklusive abschließendem Nullbyte!).
Als Rückgabewert erhält man einen String, der sich in Formatstatistiken unterteilt, die jeweils durch ein '#' getrennt sind. Die letzte Statistik schließt mit einem '##' ab.
Eine Formatstatistik hat folgenden Aufbau:
FormatID : FormatName : Anzahl_der_gefundenen_Umlaute
Der String "0:DOS:0 # 1:WINDOWS:0 # 2:Standard (sz):5 ##" bedeutet also z.B., dass in dem Text weder DOS- noch WINDOWS-Umlaute vorkommen, dafür aber 5 Umlaute im systemunabhängigen Format (ae, Ae, ..., sz)Mit dieser Funktion kann ein Text konvertiert werden.
lpszName und lpszRegKey haben die gleiche Funktion wie oben. lpszSrc ist der Zeiger auf den Quelltext, der umgewandelt werden soll, ulSrcLength ist seine Länge inklusive abschließendem Nullbyte.
ulSrcType und ulDestType entsprechen obiger FormatID und sind wie folgt definiert:
#define umlautetyp_DOS 0x00 // Umlaut nach DOS-Zeichensatz
#define umlautetyp_WINDOWS 0x01 // Umlaut nach WINDOWS-Zeichensatz
#define umlautetyp_Std_sz 0x02 // Umlaut systemunabhängig Ae, ae, ..., sz
#define umlautetyp_Std_ss 0x03 // Umlaut systemunabhängig Ae, ae, ..., ss
#define umlautetyp_undefined 0xff // Autodetect (nur für ulSrcType)
Wählen Sie ulSrcType = umlautetyp_undefined, wenn sie wollen, dass UmlauteKonverter das Format des Quelltextes selbstständig ermittelt.
Die benötigte Type-Library, sowie ein Beispielprogramm in C++
finden Sie im Verzeichnis \OLE.
Sie können UmlauteKonverter auch über die Kommandozeile steuern. Hierfür müssen Sie zunächst eine Remote-Datei erzeugen, die folgendes Format hat:
|
|
|
|
4 |
|
|
Entspricht dem Text "UmlK" |
|
|
|
Muss 1 sein |
|
|
|
Länge des Namensstrings inklusive Nullbyte |
|
|
|
Namensstring inklusive Nullbyte |
|
|
|
Länge des Schlüssels inklusive Nullbyte |
|
|
|
Schlüssel inklusive Nullbyte |
|
|
|
Länge des Pfades der Datei, die den Quelltext beinhaltet (inklusive Nullbyte) |
|
|
|
Pfad der Datei, die den Quelltext beinhaltet (inklusive Nullbyte) |
|
|
|
Format des Quelltextes.Wenn UmlauteKonverter mittels Autodetect eine Formatbestimmung durchführen soll, so kann hier der Wert für umlautetyp_undefined gewählt werden. |
|
|
|
Länge des Pfades der Datei, in die der umgewandelte Text geschrieben werden soll (inklusive Nullbyte) |
|
|
|
Pfad der Datei, in die der umgewandelte Textgeschrieben werden soll (inklusive Nullbyte) |
|
|
|
Format, in welches der Quelltexte konvertiert werden soll. |
|
|
|
Handle einer Progress-Control oder eines anderen Fensters, welches
den Befehl PBM_SETPOS (Range von 0 bis 100) verarbeiten kann. Es ist darauf
zu achten, dass bei Nutzung der Autodetect-Funktion der Fortschrittsbalken
zweimal durchlaufen wird.
Kann NULL gesetzt werden. |
|
|
|
Handle eines Fensters für die Nachrichtenbearbeitung. Diesem Fenster
werden folgende Befehle übermittelt (Bei Verwendung von Autodetect
für den AutoDetect-Vorgang zusätzlich zum Convert-Vorgang, insgesamt
also zweimal):
#define WM_USER_BeginKonversion
(WM_USER + 2)
WM_USER_BeginKonversion: Zeigt Beginn der Konvertierung an
Kann NULL gesetzt werden. |
Anschließend rufen Sie UmlauteKonverter mit dem vollständigen Pfad der Remotedatei als ersten Kommandozeilenparameter auf.
Ein kleines C++-Beispielprogramm, das auch eine einfach zu handhabende
Klasse zur Erzeugung der Remote-Dateien enthält, finden Sie im Verzeichnis
\RemoteFile.
Da das Erstellen von Remote-Dateien aus Batch-Dateien heraus schwierig bis unmöglich ist, habe ich das Tool Batch_UK entwickelt, welches im Verzeichnis \BatchRemote zu finden ist.
Zunächst setzt man den Benutzernamen und den Registrationsschlüssel (s. Registrierung) in den Umgebungsvariablen UK_NAME und UK_REGKEY, also z.B.:
set UK_NAME=Manfred MustermannDann ruft man Batch_UK auf, wobei in der Kommandozeile Eingabe-, Ausgabe- und Remotedatei spezifiziert werden. Batch_UK erstellt die Remotedatei, stellt fest, wo UmlauteKonverter installiert ist, und führt ihn mit der Remotedatei aus.
set UK_REGKEY=123456789ABCDEF
Die genaue Syntax der Kommandozeile erfahren Sie, wenn sie Batch_UK ohne Kommandozeilenparameter starten (Demo.bat ist eine Batchdatei, die ein Beispiel darstellt.).
Die Steuerung über Batch-Dateien sollte allerdings nur verwendet werden, wenn keine der anderen Steuerungsmöglichkeiten zur Verfügung steht. Da bei jedem Aufruf Batch_UK gestartet wird, jedesmal der Standort von UmlauteKonverter ermittelt werden muss und UmlauteKonverter jedesmal neu geladen und ausgeführt wird, kann es zu merklichen Verzögerungen kommen.
Batch_UK muss nicht installiert werden. Kopieren Sie es einfach
in ein beliebiges Verzeichnis, und wenn Sie es nicht mehr benötigen,
können Sie es einfach löschen. Um kurze Pfade zu erhalten (Bedenken
Sie, dass die Gesamtlänge der Kommandozeile begrenzt ist!), sollten
Sie Batch_UK, die Remotedateien und die erstellten Ausgabedateien
vielleicht im Ordner c:\uk unterbringen.
Gemäß den Lizenzbedingungen müssen Sie sich gegebenenfalls
registrieren (wie, ist in der Lizenz von UmlauteKonverter beschrieben).
Nach erfolgter Registrierung erhalten Sie einen Namensstring und einen
zugehörigen Schlüssel (RegKey). Beide benötigen Sie, um
die Registrationshinweise beim Aufruf von UmlauteKonverter abzustellen.