INPROC-Beispiel: Demonstriert eine Anwendung mit Automatisierungsserver-Process
Das INPROC-Beispiel ist ein in-Process-Automatisierungsserver (früher OLE-Automatisierung). Im Gegensatz zu den anderen MFC-Automation Server Beispielen kann INPROC als eine dynamic-link Bibliothek (DLL) im Adressbereich des Clients geladen werden. In-Process-Server sind in der Regel effizienter als die Server, die als separate exe-Dateien implementiert werden, da ein Remoteprozeduraufruf (RPC) nicht zum Aufrufen von Methoden für die Objekte implementiert, indem der Server ist.
Hinweis
Einige Beispiele wie diesen, wurden nicht geändert, um Änderungen in der Visual C++-Assistenten, Bibliotheken und Compiler, demonstrieren aber dennoch wie Sie die gewünschte Aufgabe durchführen.
Sicherheitshinweis |
---|
Dieser Beispielcode soll ein Konzept veranschaulichen, und es wird nur den Code, der für dieses Konzept relevant sind. Möglicherweise erfüllt dieser nicht die Sicherheitsanforderungen für eine bestimmte Umgebung, und er sollte nicht genau wie dargestellt verwendet werden. Wir empfehlen, Sicherheits- und Fehlerbehandlungscode hinzuzufügen, um Ihre Projekte sicherer und stabiler zu machen. Microsoft stellt diesen Beispielcode "Wie besehen"keine Garantien. |
So erhalten Sie Beispiele und Anweisungen für deren Installation:
Um Beispiele von Visual Studio zuzugreifen
im Menü Hilfe Menü klicken Beispiele.
Standardmäßig sind die Beispiele in installiert. Laufwerk: \Programme\Microsoft visual Studio 10.0\Samples\.
- Die neueste Version dieses Beispiels und eine Liste der anderen Beispiele finden Sie unter Visual Studio Samples auf der MSDN-Website.
Erstellen und Ausführen des Beispiels
So erstellen Sie und führen das INPROC-Beispiel
Öffnen Sie die Projektmappe inproc.sln.
erstellen Sie Menü, klicken Sie auf erstellen.
Registrieren Sie des INPROC-DLL des Projekts .reg-Datei verwenden, d. h. entweder Ausführen regedit INPROC.REGoder verwenden Sie REGSVR vom Beispiel ms177531(v=vs.100).md REGSVR.
Wenn Sie REGEDIT verwenden, achten Sie darauf, dass sich INPROC.dll im Systempfad ist. Alternativ können Sie die REG-Datei zum Verweisen auf den Pfad der INPROC.dll explizit ändern.
Eine DLL kann nicht ausgeführt werden eigenständige, wie eine EXE-Datei;Daher müssen zum Testen von INPROC Sie "Laufwerk"es von einer Clientanwendung. INPROC kann von Visual Basic oder Visual C++ gesteuert werden. Finden Sie im IPDRIVE Beispiel ein Beispiel von INPROC aus Visual C++.
Hinweis
Sie können eine EXE-Version oder eine DLL-Version von INPROC erstellen.Legen Sie die EXE-Variante in Projekteinstellungen des Beispiels.Eine EXE-Version von INPROC registriert sich selbst nur in der Windows-Registrierung.
INPROC-Klassen
The CVariantMapclass implements a VARIANT to VARIANT map. Dadurch werden alle VARIANT in anderen VARIANT zugeordnet werden. Obwohl dies wahrscheinlich nicht für Visual C++-Programmierer sinnvoll ist (die wahrscheinlich CMap direkt verwenden würde), bringt es die Leistungsfähigkeit des MFC-Auflistungsklassen für Visual Basic-Benutzer. CVariantMap -Klasse kann unter dem Namen mfc.inproc.varmap zugegriffen werden. Dies ist wie das Objekt in der Windows-Registrierung registriert ist. CVariantMap implementiert die Standardauflistungsmethoden und Eigenschaften sowie die _NewEnum-Methode.
Die CStringCollect-Klasse implementiert ein Array von Zeichenfolgen. Ihre Implementierung ist einfacher als die CVariantMap -Klasse, obwohl es großen Teil dieselben Automatisierungsfeatures wie CVariantMap implementiert werden. Unter dem Namen CStringCollect kann mfc.inproc.strcoll-Objekt zugegriffen werden. Es die meisten der Standardauflistungsmethoden und Eigenschaften implementiert und ein gutes Beispiel für das eigene Auflistungen implementieren. Von besonderem Interesse ist die Implementierung der _NewEnum -Methode, die Visual Basic Benutzern die Verwendung die Syntax For Each... In beim Auflisten des Inhalts einer Auflistung ermöglicht. CStringCollect verwendet CEnumVariant , um diese Funktionalität zu implementieren (es implementiert IEnumVARIANT unter Verwendung der MFC-Schnittstelle-Karten). Sie können CEnumVariant in Ihren eigenen Anwendungen hilfreich sein.
Das Beispiel implementiert abschließend ein paar dummy Eigenschaften, die einfach auf die Leistung von in-Process-Servern und LocalServer-Servern vergleichen verwendet werden. Dies sind die Eigenschaften von IPDRIVE des getestet Schaltflächen Test1 und Test2.
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