5.9 Generierung der Schnittstelleninformation
In diesem Kapitel werden die Schritte vorgestellt, die notwendig sind um aus einem Dialog mit einem als ole_server definierten Control einen OLE-Server zu bauen.
5.9.1 Generieren der idl- und reg-Dateien
Mit der Option ‑writeole <Basisname> des IDM-Simulationsprogramms idm.exe werden aus einem Dialogskript, das als OLE-Server definierte Controls enthält, die zur Registrierung notwendigen Dateien erzeugt. Es werden eine idl- und eine reg-Datei generiert.
Mit folgenden zusätzlichen Optionen kann die Generierung beeinflusst werden:
- +localserver <Pfad des eigentlichen Executables>
- +helpdir <Verzeichnis der Hilfedateien>
- +typelib <Pfad der Typbibliothek>
- +deficon <Pfad des Standardsymbol>
- +proxy <Name des Proxy-Stubs>
-
‑userregistry (ab IDM-Version A.06.01.g)
Registrierung nur für den aktuellen Benutzer (unter HKEY_CURRENT_USER in der Windows-Registry)
Folgende Standardeinträge werden mit idm.exe <Dialog> ‑writeole <Datei> in die Registrierungsdatei <Datei>.reg aufgenommen, wenn sie nicht durch eine der oben genannten Optionen überschrieben wurden:
LocalServer32 = "<Pfad zu idm.exe> <Dialog> /Automation"
TypeLib = "<Datei>.tlb"
HelpDir = ""
DefIcon = ""
Der Name des Proxy-Stubs wird standardmäßig auf <Basisname>.dll gesetzt.
5.9.2 Registrierung des Servers
Ein Doppelklick auf die reg-Datei (sofern reg-Dateien im System korrekt verknüpft sind) oder der Aufruf von regedit.exe mit der generierten reg-Datei als Argument registriert das Control beim System.
Beispiel
server.reg server.idl: server.dlg $(IDM) server.dlg \ -localserver "$(IDM) server.dlg -IDMtracefile server.log" \ -writeole server regedit server.reg
In diesem Beispiel ist auch die Kommandozeile für den Server angegeben, sodass dieser immer ein Tracefile erzeugt. Anschließend wird der Server noch im System registriert.
5.9.3 Weiterverarbeitung der idl-Datei
Die mit Hilfe der Option ‑writeole erzeugte idl-Datei muss mit dem MIDL-Compiler weiterverarbeitet werden, der mit Microsoft Visual Studio ausgeliefert wird. Der MIDL-Compiler erzeugt aus der idl-Datei eine Proxy-DLL, die das OLE-Marshalling
des Interfaces übernimmt. Als Standardpfad wird dafür der Ausgabename von ‑writeole mit der Erweiterung .dll
genommen, dies kann aber mit der Option +proxy überschrieben werden.
Beispiel
server.tlb server_p.c server_i.c server.h dlldata.c: server.idl midl /ms_ext /app_config /c_ext /tlb server.tlb /Zp1 \ /env win32 /Os server.idl
Die mit dem MIDL-Compiler generierten Dateien müssen dann mit dem C-Compilers übersetzt und zu einer DLL gelinkt werden.