Registrierung

Wenn ein Benutzer ein OLE-Element in eine Anwendung einfügen möchte, zeigt OLE eine Liste von Objekttypen an, aus der Sie auswählen können. OLE ruft diese Liste aus der Systemregistrierungsdatenbank ab, die Informationen enthält, die von allen Serveranwendungen bereitgestellt werden. Wenn ein Server sich selbst registriert, beschreiben die Einträge, die er in die Systemregistrierungsdatenbank (die Registrierung) einfügt, jeden Objekttyp, den er bereitstellt, Dateierweiterungen und den Pfad zu sich selbst, unter anderem.

Das Framework und die DYNAMIC Link Libraries (DLL) des OLE-Systems verwenden diese Registrierung, um zu bestimmen, welche Typen von OLE-Elementen auf dem System verfügbar sind. Die OLE-System-DLLs verwenden diese Registrierung auch, um zu bestimmen, wie eine Serveranwendung gestartet wird, wenn ein verknüpftes oder eingebettetes Objekt aktiviert wird.

In diesem Artikel wird beschrieben, was jede Serveranwendung tun muss, wenn sie installiert ist, und jedes Mal, wenn sie ausgeführt wird.

Ausführliche Informationen zur Systemregistrierungsdatenbank und zum Format der reg-Dateien, die zum Aktualisieren verwendet werden, finden Sie in der OLE-Programmierreferenz.

Serverinstallation

Wenn Sie Ihre Serveranwendung zum ersten Mal installieren, sollte sie alle Typen von OLE-Elementen registrieren, die von ihr unterstützt werden. Sie können auch die Systemregistrierungsdatenbank jedes Mal aktualisieren lassen, wenn sie als eigenständige Anwendung ausgeführt wird. Dadurch bleibt die Registrierungsdatenbank auf dem neuesten Stand, wenn die ausführbare Datei des Servers verschoben wird.

Hinweis

MFC-Anwendungen, die vom Anwendungs-Assistenten generiert werden, registrieren sich automatisch, wenn sie als eigenständige Anwendungen ausgeführt werden.

Wenn Sie Ihre Anwendung während der Installation registrieren möchten, verwenden Sie das RegEdit.exe-Programm. Wenn Sie ein Setupprogramm in Ihre Anwendung aufnehmen, führen Sie das Setupprogramm "RegEdit /S appname.reg" aus. (Das Flag "/S" gibt den unbeaufsichtigten Vorgang an, d. h., es wird das Dialogfeld nicht angezeigt, in dem der Erfolgreiche Abschluss des Befehls gemeldet wird.) Andernfalls weisen Sie den Benutzer an, RegEdit manuell auszuführen.

Hinweis

Die vom Anwendungs-Assistenten erstellte REG-Datei enthält nicht den vollständigen Pfad für die ausführbare Datei. Ihr Installationsprogramm muss entweder die REG-Datei ändern, um den vollständigen Pfad zur ausführbaren Datei einzuschließen, oder die PATH-Umgebungsvariable so ändern, dass sie das Installationsverzeichnis enthält.

RegEdit führt den Inhalt der REG-Textdatei in der Registrierungsdatenbank zusammen. Um die Datenbank zu überprüfen oder zu reparieren, verwenden Sie den Registrierungs-Editor. Achten Sie darauf, das Löschen wesentlicher OLE-Einträge zu vermeiden.

Serverinitialisierung

Wenn Sie eine Serveranwendung mit dem Anwendungs-Assistenten erstellen, führt der Assistent automatisch alle Initialisierungsaufgaben für Sie aus. In diesem Abschnitt wird beschrieben, was Sie tun müssen, wenn Sie eine Serveranwendung manuell schreiben.

Wenn eine Serveranwendung von einer Containeranwendung gestartet wird, fügen die OLE-System-DLLs die Option "/Embedding" zur Befehlszeile des Servers hinzu. Das Verhalten einer Serveranwendung unterscheidet sich je nachdem, ob sie von einem Container gestartet wurde. Daher sollte eine Anwendung zuerst bei Beginn der Ausführung die Option "/Embedding" oder "-Embedding" in der Befehlszeile überprüfen. Wenn dieser Switch vorhanden ist, laden Sie einen anderen Satz von Ressourcen, die den Server als aktiv oder vollständig geöffnet anzeigen. Weitere Informationen finden Sie unter Menüs und Ressourcen: Serverzufügungen.

Ihre Serveranwendung sollte ihre Funktion auch aufrufen CWinApp::RunEmbedded , um die Befehlszeile zu analysieren. Wenn ein Wert ungleich Null zurückgegeben wird, sollte die Anwendung das Fenster nicht anzeigen, da sie von einer Containeranwendung ausgeführt wurde, nicht als eigenständige Anwendung. Diese Funktion aktualisiert den Eintrag des Servers in der Systemregistrierungsdatenbank und ruft die Memberfunktion für Sie auf, wobei die RegisterAll Instanzregistrierung ausgeführt wird.

Wenn Die Serveranwendung gestartet wird, müssen Sie sicherstellen, dass sie die Instanzregistrierung ausführen kann. Die Instanzregistrierung informiert die OLE-System-DLLs darüber, dass der Server aktiv ist und bereit ist, Anforderungen von Containern zu empfangen. Der Registrierungsdatenbank wird kein Eintrag hinzugefügt. Führen Sie die Instanzregistrierung des Servers durch Aufrufen der ConnectTemplate durch COleTemplateServer. Dadurch wird das CDocTemplate Objekt mit dem COleTemplateServer Objekt verbunden.

Die ConnectTemplate Funktion verwendet drei Parameter: die CLSID des Servers, einen Zeiger auf das CDocTemplate Objekt und ein Flag, das angibt, ob der Server mehrere Instanzen unterstützt. Ein Miniserver muss mehrere Instanzen unterstützen können, d. h. es muss möglich sein, dass mehrere Instanzen des Servers gleichzeitig ausgeführt werden können, eine für jeden Container. Übergeben Sie daher TRUE für dieses Flag beim Starten eines Miniservers.

Wenn Sie einen Miniserver schreiben, wird er standardmäßig immer von einem Container gestartet. Sie sollten die Befehlszeile weiterhin analysieren, um nach der Option "/Einbetten" zu suchen. Das Fehlen dieser Option in der Befehlszeile bedeutet, dass der Benutzer versucht hat, den Miniserver als eigenständige Anwendung zu starten. Registrieren Sie in diesem Fall den Server mit der Systemregistrierungsdatenbank, und zeigen Sie dann ein Meldungsfeld an, in dem der Benutzer informiert wird, den Miniserver aus einer Containeranwendung zu starten.

Siehe auch

OLE
Server
CWinApp::RunAutomated
CWinApp::RunEmbedded
COleTemplateServer-Klasse