INPROC-Beispiel: Demonstriert eine Anwendung mit einem prozessinternen Automatisierungsserver

Aktualisiert: November 2007

Das INPROC-Beispiel ist ein prozessinterner Automatisierungsserver (früher OLE-Automatisierung). Im Gegensatz zu den anderen Beispielen für MFC-Automatisierungsserver kann INPROC als Dynamic Link Library (DLL) in den Adressbereich des Clients geladen werden. Prozessinterne Server sind in der Regel leistungsfähiger als Server, die als separate EXE-Dateien implementiert wurden, da zum Aufrufen von Methoden auf den vom Server implementierten Objekten kein Remoteprozeduraufruf (RPC) erforderlich ist.

Hinweis:

In diesem und einigen anderen Beispielen wurden die Änderungen an den Visual C++-Assistenten, -Bibliotheken und -Compilern noch nicht nachvollzogen. Sie demonstrieren aber dennoch, wie Sie die gewünschte Aufgabe durchführen können.

Sicherheitshinweis:

Dieser Beispielcode dient dazu, ein Konzept zu veranschaulichen. Er sollte nicht für Anwendungen oder Websites verwendet werden, da dieser Code unter Umständen nicht die sicherste Codierungstechnik darstellt. Microsoft übernimmt keine Haftung für beiläufig entstandene Schäden oder Folgeschäden, falls der Beispielcode nicht bestimmungsgemäß verwendet wird.

So rufen Sie Beispiele und Anweisungen für ihre Installation ab

  • Klicken Sie in Visual Studio im Menü Hilfe auf Beispiele.

    Weitere Informationen finden Sie unter Suchen von Beispieldateien.

  • Die neueste Version und vollständige Liste mit Beispielen ist online unter Visual Studio 2008 Samples verfügbar.

  • Sie können auch Beispiele auf der Festplatte des Computers suchen. Standardmäßig werden Beispiele und eine Infodatei in einen Ordner unter \Programme\Visual Studio 9.0\Samples\ kopiert. Für Express Editions von Visual Studio sind alle Beispiele online verfügbar.

Erstellen und Ausführen des Beispiels

So erstellen Sie das INPROC-Beispiel und führen es aus

  1. Öffnen Sie die Projektmappe inproc.sln.

  2. Klicken Sie im Menü Erstellen auf Erstellen.

  3. Registrieren Sie INPROCs DLL mit der REG-Datei des Projekts. Führen Sie also entweder regedit INPROC.REG aus, oder verwenden Sie REGSVR aus dem REGSVR-Beispiel.

    Wenn Sie REGEDIT verwenden, achten Sie darauf, dass sich Inproc.dll im Systempfad befindet. Andernfalls können Sie die REG-Datei so ändern, dass sie ausdrücklich auf den Pfad von Inproc.dll verweist.

    Eine DLL kann nicht wie eine EXE-Datei eigenständig ausgeführt werden. Wenn Sie INPROC also testen möchten, müssen Sie es von einer Clientanwendung aus "steuern". INPROC kann von Visual Basic aus oder von Visual C++ aus gesteuert werden. Ein Beispiel für das Steuern von INPROC aus Visual C++ heraus finden Sie unter IPDRIVE.

    Hinweis:

    Sie können eine EXE-Version oder eine DLL-Version von INPROC erstellen. Die Einstellungen für die EXE-Variante werden in den Projekteinstellungen des Beispiels vorgenommen. Eine EXE-Version von INPROC registriert sich selbst nur in der Windows-Registrierung.

INPROC-Klassen

Die CVariantMap-Klasse implementiert eine "VARIANT-zu-VARIANT"-Zuordnung. Dadurch kann können beliebige VARIANTs einander zugeordnet werden. Dies dürfte für Visual C++-Programmierer nur von geringer Bedeutung sein (da diese eher direkt CMap verwenden). Benutzern von Visual Basic wird damit jedoch die Möglichkeit gegeben, die Funktionen der MFC-Auflistungsklassen zu nutzen. Auf die CVariantMap-Klasse kann unter dem Namen mfc.inproc.varmap zugegriffen werden. So wird das Objekt in der Windows-Registrierung eingetragen. CVariantMap implementiert die Methoden und Eigenschaften der Standardauflistung sowie die _NewEnum-Methode.

Die CStringCollect-Klasse implementiert ein Array aus Zeichenfolgen. Ihre Implementierung ist einfacher als die der CVariantMap-Klasse, obwohl dabei zum großen Teil dieselben Automatisierungsfeatures wie bei CVariantMap implementiert werden. Auf das CStringCollect-Objekt kann unter dem Namen mfc.inproc.strcoll zugegriffen werden. Es implementiert die meisten der Methoden und Eigenschaften der "Standardauflistung". Anhand dieses Beispiels können Sie gut nachvollziehen, wie Sie eigene Auflistungen implementieren. Besonders interessant ist seine Implementierung der _NewEnum-Methode, durch die Visual Basic-Benutzer beim Auflisten des Inhalts einer Auflistung die For Each... In-Syntax verwenden können. CStringCollect verwendet CEnumVariant zum Implementieren dieser Funktion (es implementiert IEnumVARIANT mithilfe der MFC-Schnittstellenzuordnungen). CEnumVariant erweist sich möglicherweise auch in Ihren eigenen Anwendungen als nützlich.

Darüber hinaus implementiert das Beispiel einige "Dummy-Eigenschaften", die lediglich für den Vergleich der Leistungsfähigkeit von prozessinternen Servern und LocalServer-Servern verwendet werden. Dies sind die Eigenschaften, die von den IPDRIVE-Schaltflächen Test1 und Test2 getestet werden.

Schlüsselwörter

Dieses Beispiel demonstriert die Verwendung der folgenden Schlüsselwörter:

AfxIsValidAddress; AfxMessageBox; AfxOleInit; AfxOleLockApp; AfxOleUnlockApp; AfxThrowMemoryException; AfxThrowOleException; CCmdTarget::EnableAutomation; CCmdTarget::GetIDispatch; CCmdTarget::OnFinalRelease; CString::AllocSysString; CWinApp::InitInstance; CWinApp::RunAutomated; CWinApp::RunEmbedded; DllCanUnloadNow; DllGetClassObject; min

Siehe auch

Weitere Ressourcen

MFC-Beispiele