Registrierung

Wenn ein Benutzer ein OLE-Element in einer Anwendung einfügen möchte, setzt OLE eine Liste von Objekttypen aus, sodass sie auszuwählen.OLE ruft diese Liste registrierungs System aus der Datenbank ab, die die Informationen enthält, die alle Serveranwendungen bereitgestellt werden.Wenn ein Server registriert sich die Einträge in der Registrierung (die Datenbank registrierungs System) beschreibt jeden Objekttyp und Dateierweiterungen, stellt sie sich der Pfad setzt sich mit weiteren Informationen.

Das Framework und OLE-System Link librarys dynamic (DLL) verwenden diese Registrierung, um zu bestimmen, welche Arten von OLE-Elementen auf dem System zur Verfügung stehen.Die OLE-Systeme-DLL verwenden ebenfalls diese Registrierung, um zu bestimmen, wie eine Serveranwendung startet, wenn in Verbindung steht oder ein eingebettetes Objekt aktiviert ist.

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

Ausführliche Informationen über die registrierungs System Datenbank und den Stil der .reg-Dateien, die verwendet werden, um sie zu aktualisieren, finden Sie in der OLE-Programmierreferenz.

Serverinstallation

Wenn Sie zuerst die Serveranwendung installieren, sollte sie alle Typen OLE-Elemente registrieren, die sie unterstützen.Sie können den Server registrierungs System die Zieldatenbank jedes Mal aktualisiert, auch wenn sie als eigenständige Anwendung ausgeführt wird.Dadurch wird die Registrierungsdatenbank aktuell, wenn die ausführbare Datei des Servers verschoben wird.

HinweisHinweis

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

Wenn Sie während der Installation der Anwendung registrieren möchten, verwenden Sie das RegEdit.exe-Programm.(Unter Windows 95, Windows 98 und Windows Me, ist Regedit im Windows-Verzeichnis.Unter Windows NT und Windows 2000 wird im Ordner Windows System32 Regedit ein.) Wenn Sie ein Setupprogramm mit Ihrer Anwendung einschließen, haben Sie Setupprogramm ausgeführte Regedit appname.reg" /S ".(Die /S- gibt automatischen Vorgang an, d.h., wird es nicht den berichtenden erfolgreichen Abschluss des Dialogfelds des Befehls an.) Andernfalls weisen Sie den Benutzer auf, um Regedit manuell auszuführen.

HinweisHinweis

Die .reg-Datei, die vom Anwendungs-Assistenten erstellt wird, schließt nicht den vollständigen Pfad für die ausführbare Datei.Das Installationsprogramm muss entweder die .reg-Datei ändern, um den vollständigen Pfad zur ausführbaren Datei einzufügen oder die PATH-Umgebungsvariable ändern, um das Installationsverzeichnis zu schließen.

Regedit führt den Inhalt der .reg-Textdatei in der Registrierungsdatenbank zusammen.Um die Datenbank zu überprüfen oder zu korrigieren, verwenden Sie den Registrierungs-Editor.Mach's am besten, um die wichtigsten, OLE-Einträge zu löschen.(Unter Windows 95, Windows 98 und Windows Me, der Registrierungs-Editor RegEdit.exe.Unter Windows NT und Windows 2000 ist er RegEdit32.exe).

Server-Initialisierung

Wenn Sie eine Serveranwendung mit dem Anwendungs-Assistenten erstellen, schließt der Assistent alle Initialisierungsaufgaben automatisch ab.In diesem Abschnitt wird beschrieben, was Sie tun müssen, wenn Sie eine Serveranwendung manuell schreiben.

Wenn eine Serveranwendung über eine Containeranwendung gestartet wird, fügen Sie die OLE-Systeme-DLL die "- /Embedding" - Option in der Befehlszeile des Servers hinzufügen.Ein Verhalten der Serveranwendung unterscheidet sich abhängig davon, ob er von einem Container gestartet wurde, daher sollte die erste Schritt bei der Anwendung Ausführung ist die Überprüfung oder "/Embedding" beginnt Mithilfe von eingebetteten" do "- Option in der Befehlszeile.Wenn dieser Schalter vorhanden ist, laden Sie einen anderen Satz von Ressourcen, die den Server erfolgt entweder direkt als aktiviert oder vollständig geöffnet.Weitere Informationen finden Sie unter Menüs und Ressourcen: Server-Hinzufügungen.

Die Serveranwendung sollte seine CWinApp::RunEmbedded-Funktion aufrufen, um die Befehlszeile zu analysieren.Wenn ein Wert ungleich 0 zurückgibt, sollte die Anwendung Fenster sein, da sie von einer Containeranwendung nicht ausgeführt wurde, nicht als eigenständige Anwendung anzeigen.Diese Funktion aktualisiert den Eintrag des Servers in die Zieldatenbank registrierungs und ruft die RegisterAll-Memberfunktion automatisch Registrierung der Instanz an und führt sie aus.

Wenn die Serveranwendung gestartet wird, müssen Sie sicherstellen, dass die Registrierung der Instanz sie ausführen kann.informiert die Registrierung der Instanz OLE-Systeme-DLL, dass der Server aktiv und betriebsbereit ist, Anforderungen von Containern zu empfangen.Sie fügt einen Eintrag nicht der Registrierungsdatenbank hinzu.Führen Sie auf Instanz Registration des Servers aus, indem Sie die Memberfunktion ConnectTemplate durch COleTemplateServer aufrufen.Dies schließt das CDocTemplate-Objekt, das COleTemplateServer-Objekt an.

Die ConnectTemplate-Funktion akzeptiert drei Parameter: CLSID des Servers ein, einen Zeiger auf den CDocTemplate-Objekt und einem Flag, ob der Server über mehrere Instanzen unterstützt.Ein miniserver muss in der Lage sein, mehrere Instanzen zu unterstützen, d.h., muss es für mehrere Instanzen des Servers möglich sein, die gleichzeitig ausgeführt werden, und zwar für jeden Container.Folglich übergeben Sie dieses Flag für TRUE, wenn Sie ein miniserver starten.

Wenn Sie ein miniserver definitionsgemäß schreiben, wird er immer durch einen Container gestartet.Sie sollten dennoch die Befehlszeile analysiert werden, um für die "- /Embedding" - Option zu überprüfen.Das Fehlen dieser Option in der Befehlszeile bedeutet, dass der Benutzer versucht, das miniserver als eigenständige Anwendung zu starten.Wenn dies auftritt, registrieren Sie den Server mit der Datenbank registrierungs System und zeigen Sie anschließend ein Meldungsfeld an, in dem der Benutzer informiert, das zum Starten miniserver aus einer Containeranwendung.

Siehe auch

Referenz

CWinApp::RunAutomated

CWinApp::RunEmbedded

COleTemplateServer-Klasse

Konzepte

OLE in MFC

Server