INPROC サンプル:インプロセス オートメーション サーバー アプリケーションを示します

INPROC サンプルは、インプロセス オートメーション (以前の OLE オートメーション) サーバーです。 ほかの MFC オートメーション サーバー サンプルとは異なり、INPROC はクライアントのアドレス空間にダイナミック リンク ライブラリ (DLL: Dynamic Link Library) として読み込むことができます。 通常、インプロセス サーバーは個別の EXE として実装されたサーバーよりも効率的です。これは、サーバーによって実装されたオブジェクトに対するメソッドを呼び出すリモート プロシージャ コール (RPC: Remote Procedure Call) が不要なためです。

注意

このサンプルを含む一部のサンプルには、Visual C++ のウィザード、ライブラリ、およびコンパイラの変更が反映されていませんが、必要なタスクを実行する方法は示されています。

セキュリティに関するメモセキュリティに関するメモ

このサンプル コードは概念を示すためのものであり、その概念に関連するコードのみを示しています。特定の環境について必ずしもセキュリティ要件を満たしていませんので、そのまま使用しないでください。セキュリティおよびエラー処理コードを追加して、プロジェクトをより安全かつ堅牢にすることをお勧めします。これらのサンプル コードは、現状有姿のままで提供されるものであり、一切保証されていません。

サンプルとそのインストール手順を取得するには

Visual Studio のサンプルにアクセスするには

  • [ヘルプ] メニューの [サンプル] をクリックします。

    既定では、これらのサンプルは drive:\Program Files\Microsoft Visual Studio 10.0\Samples\ にインストールされています。

  • このサンプルの最新版および他のサンプルの一覧については、MSDN Web サイト上で Visual Studio サンプル 」を参照してください。

サンプルのビルドと実行

INPROC サンプルをビルドおよび実行するには

  1. ソリューション ファイル inproc.sln を開きます。

  2. [ビルド] メニューの [ビルド] をクリックします。

  3. プロジェクトの .reg ファイルを使用して INPROC の DLL を登録します。つまり、regedit INPROC.REG を実行するか、または REGSVR サンプルの REGSVR を使用します。

    REGEDIT を使用する場合は、Inproc.dll がシステム パスにあることを確認してください。 または、Inproc.dll のパスを明示的に参照するように .reg ファイルを変更できます。

    DLL はスタンドアロンで実行できませんが、EXE は可能です。したがって、INPROC をテストするには、クライアント アプリケーションで "呼び出す" 必要があります。 INPROC は Visual Basic または Visual C++ から呼び出すことができます。 Visual C++ で INPROC を呼び出す例については、IPDRIVE サンプルに関するトピックを参照してください。

    注意

    INPROC は EXE または DLL としてビルドできます。サンプルのプロジェクト設定で EXE バリアントを設定してください。EXE バージョンの INPROC は Windows レジストリにしか登録できません。

INPROC のクラス

The CVariantMapclass implements a VARIANT to VARIANT map. これには、VARIANT の他の VARIANT をマップすることができます。 このクラスは、CMap を直接使用する可能性が高い Visual C++ プログラマにはそれほど役立たないかもませんが、MFC のコレクション クラスの充実した機能を Visual Basic ユーザーにもたらします。 によって、名前 CVariantMapmfc.inproc.varmap クラスにアクセスします。 これはオブジェクトが Windows レジストリに登録される方法です。 CVariantMap 標準コレクションのメソッドおよびプロパティと同様、 _NewEnum メソッドを実装します。

CStringCollect クラス文字列の配列を実装します。 その実装がより単純な CVariantMap クラスより多くの同じオートメーション機能 CVariantMap として実装されていてです。 CStringCollect オブジェクトに、 mfc.inproc.strcoll 名でアクセスします。 これは、標準コレクションのメソッドとプロパティのほとんどを実装し、独自のコレクションを実装する方法の例として適しています。 特に重要なのは _NewEnum メソッドの実装です。この実装により、Visual Basic ユーザーが、コレクションの内容を列挙するときに For Each... In 構文を使用できるようになります。 CStringCollect CEnumVariant (実装の MFC インターフェイス マップを使用して IEnumVARIANT) この機能を実装するために使用します。 そこで CEnumVariant 独自のアプリケーションで便利です。

最後に、このサンプルでは、インプロセス サーバーと LocalServer サーバーのパフォーマンスを簡単に比較するために使用するいくつかのダミー プロパティが実装されます。 これらは、IPDRIVE の [Test1] ボタンと [Test2] ボタンでテストされるプロパティです。

Keywords

このサンプルでは、次のキーワードを使用します。

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

参照

その他の技術情報

MFC サンプル