COM-Befehle
COM-Befehle Befehle zur Kommunikation mit der COM-Schnittstelle
Befehle
ComArgGetComArgSetComCallComCallResultComCloseComInfoComOpenComPropGetComPropGetTextComPropSetComPropSetText
Konstanten
Das Component Object Model (COM) ist eine Software Architektur, die es ermöglicht, über eine binäre Schnittstelle auf Anwendungen und Komponenten von verschiedenen Herstellern zuzugreifen. Es beruht auf einem objektbasierenden Modell, das zwischen Schnittstelle und Implementierung trennt. Die Funktionalität wird über eine Sammlung von Objekten angesprochen. Diese Objekte bestehen aus Eigenschaften, Methoden und Ereignissen. Dieses Objektmodell mt den dazugehörenden Methoden wird in der Dokumentation es entsprechenden Programms beschrieben.
In CONZEPT 16 werden COM-Ereignisse nicht unterstützt. Von dieser Ausnahme sind auch Eigenschaften und Methoden betroffen, die keinen entsprechenden CONZEPT 16-Variablentyp als Argument erwarten oder als Resultat zurückgeben.
Die Objekte sind hierarchisch aufgebaut. Somit kann ein Objekt eine Sammlung von Unterobjekten beinhalten. Statt dafür jeweils einen Befehl zu implementieren, wird auf diese Objekte über eine Eigenschaft zugegriffen, die als Resultat ein Container-Objekt zurückliefert.
Durch das Auslesen von Eigenschaften können somit der Zustand, Informationen oder wiederum andere Objekte abgefragt werden. Durch das Setzen von Eigenschaften kann das Verhalten der Objekte gesteuert werden. Methoden sind mit Funktionsaufrufen vergleichbar, wobei der Unterschied zum Setzen einer Eigenschaft nur vom Design der Komponente bestimmt ist.
COM-Objekte werden in CONZEPT 16 über Deskriptoren abgebildet. Eine Verbindung zu einem COM-Server wird über den Befehl ComOpen () oder über die COM-Objekte hergestellt. Die Eigenschaften werden über den Befehl ComPropSet () gesetzt und über den Befehl ComPropGet () ausgelesen. Parallel dazu wird auch die Kurzschreibweise über Konstanten unterstützt. Die Konstanten zu Eigenschaften von COM-Objekten setzen sich wie folgt zusammen:
cp<Typ><Eigenschaft>
<Typ> ist eine Abkürzung des Datentypes der Eigenschaft. Folgende Kürzel können angegeben werden:
<Typ> | CONZEPT 16-Typ | COM Typ |
|---|---|---|
| a | alpha | String |
| c | caltime | variant time |
| f | float | Gleitkomma |
| h | handle | Objekt oder Klasse |
| i | int | Long oder Single |
| l | logic | Boolean |
| x | Extended | Array |
| x? | Extended | Array eines bestimmten Typs (a, c, f, h, i, l) |
<Eigenschaft> ist der Name der Eigenschaft eines bestimmten Objekts. Wird eine Eigenschaft gesetzt, die nur gelesen werden kann, erfolgt bei der Verwendung der Konstanten ein Laufzeitfehler. Der Befehl ComPropSet () liefert dagegen einen Wert ungleich 0 als Ergebnis zurück.
tComApp # ComOpen('Word.Application', _ComAppCreate);
tComApp->cplVisible # true;
Äquivalent dazu kann das Setzen der Eigenschaft Visible auch folgendermaßer durchgeführt werden:
tComApp->ComPropSet('Visible', true);
In einigen Applikationen ist eine Eigenschaft in weitere Eigenschaften unterteilt. Diese Eigenschaften können in der Kurzschreibweise mit cp<Typ><Eigenschaft>(<Eigenschaft>) angesprochen werden.
Im folgenden ein Beispiel zum Lesen und Setzen einer Eigenschaft ("ServerHTTPRequest" vom Typ logic) in einer Eigenschaft ("ClientProperty"):
tValue # tComObject->cplClientProperty('ServerHTTPRequest');
tComObject->cplClientProperty('ServerHTTPRequest') # true;
Existiert eine angegebene Eigenschaft nicht, wird bei Verwendung der Konstanten ein Laufzeitfehler generiert. Werden die Befehle ComPropSet () oder ComPropGet () verwendet, wird der Wert false zurückgegeben.
Erweiterte Eigenschaften (x) können nur über Konstanten angesprochen werden. Weitere Informationen befinden sich im Abschnitt Erweiterte Eigenschaften .
Methoden werden mit dem Befehl ComCall () aufgerufen und sind immer Bestandteil eines Objekts. Beim Aufruf einer Methode ist zu beachten, dass die Verarbeitung nicht in CONZEPT 16 stattfindet. Je nach Implementierung kann der Aufruf noch vor Beendigung der Methode zurückkehren. Wird zum Beispiel eine länger laufende Berechnung angestoßen oder ein Makro aufgerufen und anschließend sofort auf das Ergebnis zugegriffen, kann es zu einem fehlerhaften Verhalten kommen, wenn die Durchführungszeit nicht abgewartet wird.
Liefert eine aufgerufene Methode ein ergebnis zurück, kann das Ergebnis mit der Anweisung ComCallResult () ermittelt werden.
Im Abschnitt Verwendung der COM-Schnittstelle von Microsoft Word wird die Benutzung der Schnittstelle erläutert.