IPDRIVE サンプル : オートメーション クライアント アプリケーションの例
更新 : 2007 年 11 月
IPDRIVE サンプルは、INPROC サンプル アプリケーションを呼び出す、単純なオートメーション (以前の OLE オートメーション) クライアント アプリケーションです。このサンプルは、オートメーション インプロセス サーバーである INPROC に用意されている機能をテストします。IPDRIVE は、インプロセスの INPROC だけでなく、アウトプロセスやローカル サーバーの INPROC も呼び出すことができ、インプロセス コンポーネントのパフォーマンスの利点を示します。詳細については、「INPROC サンプル : インプロセス オートメーション サーバー アプリケーションの例」を参照してください。
メモ : |
---|
IPDRIVE を実行する前に、INPROC サンプル アプリケーションを実行して INPROC 自体をレジストリに登録する必要があります。 |
セキュリティに関するメモ : |
---|
このサンプル コードは概念を示す目的で提供されているものです。必ずしも最も安全なコーディング手法に従っているわけではないので、アプリケーションまたは Web サイトでは使用しないでください。Microsoft は、サンプル コードが意図しない目的で使用された場合に、付随的または間接的な損害について責任を負いません。 |
サンプルとそのインストール手順を取得するには
Visual Studio で、[ヘルプ] メニューの [サンプル] をクリックします。
詳細については、「サンプル ファイルの格納場所」を参照してください。
使用できるサンプルの最新バージョンと完全な一覧については、オンラインの Visual Studio 2008 Samples のページを参照してください。
サンプルは、コンピュータのハード ディスク上にもあります。既定では、サンプルおよび Readme ファイルは、\Program Files\Visual Studio 9.0\Samples\ の下のフォルダにコピーされます。Visual Studio Express Edition の場合、すべてのサンプルはオンライン上にあります。
サンプルのビルドと実行
IPDRIVE サンプルをビルドおよび実行するには
手順に従って、INPROC サンプルの実行、ビルド、および登録を行います。
ソリューション ファイル ipdrive.sln を開きます。
[ビルド] メニューの [ビルド] をクリックします。
システムに登録するために、IPDRIVE をスタンドアロン アプリケーションとして実行します。
IPDRIVE を実行すると、INPROC サンプルが読み込まれ、IPDRIVE のインターフェイスを使用して操作できるバリアント マップ オブジェクトが作成されます。
バリアント マップ オブジェクトは MFC CMap コレクションによく似ています。このオブジェクトは、任意の値を別の任意の値に変換するために使用します。各値は VARIANT であり、型と値で構成されます。IPDRIVE ユーザー インターフェイスを使用すると、型と値の両方にアクセスできます。変換できる型と値の組み合わせは任意です。
また、IPDRIVE には [Test1] および [Test2] という 2 つのボタンが用意されています。これらを使用すると、INPROC サーバー アプリケーションのパフォーマンスをテストできます。ほとんどの部分では、これらの関数はオートメーションの関数呼び出しのオーバーヘッドをテストします。関数呼び出しのオーバーヘッドは、インプロセスの INPROC よりもローカル サーバーの INPROC の方が大きくなると予想されます。ローカル サーバーは、独自のアドレス空間で個別の実行可能ファイルとして実行します。このため、オブジェクトのメソッドやプロパティにアクセスするためにリモート プロシージャ コール (RPC) が必要です。ただし、インプロセス サーバーはクライアントのアドレス空間に DLL として読み込まれるため、RPC は不要です。[Test1] ボタンと [Test2] ボタンは両方ともちょうど 5 秒間実行し、呼び出し回数を表示します。呼び出し回数が多いほど、パフォーマンスが優れています。
INPROC には、さらに単純なコレクション (文字列配列) も含まれています。これは IPDRIVE では実行されません。
キーワード
このサンプルでは、次のキーワードを使用します。
AfxMessageBox; AfxOleInit; AfxThrowUserException; CArchive::IsStoring; CComboBox::GetCurSel; CComboBox::SetCurSel; CControlBar::EnableDocking; CControlBar::GetBarStyle; CControlBar::SetBarStyle; CDialog::DoModal; CDocument::OnNewDocument; CFrameWnd::DockControlBar; CFrameWnd::EnableDocking; CObject::AssertValid; CObject::Dump; CObject::Serialize; COleDispatchDriver::GetProperty; COleDispatchDriver::InvokeHelper; COleDispatchDriver::SetProperty; CScrollView::ResizeParentToFit; CStatusBar::Create; CStatusBar::SetIndicators; CString::AllocSysString; CString::Format; CString::GetBuffer; CString::LoadString; CString::ReleaseBuffer; CToolBar::Create; CToolBar::LoadBitmap; CToolBar::SetButtons; CView::GetDocument; CView::OnInitialUpdate; CWinApp::AddDocTemplate; CWinApp::InitInstance; CWinApp::LoadStdProfileSettings; CWinApp::OnFileNew; CWnd::DoDataExchange; CWnd::GetDlgItem; CWnd::GetParentFrame; CWnd::GetWindowText; CWnd::OnCreate; CWnd::SetDlgItemText; CWnd::SetWindowText; DragAcceptFiles; GetKeyState; GetTickCount; max; wsprintf
メモ : |
---|
このサンプルを含む一部のサンプルには、Visual C++ のウィザード、ライブラリ、およびコンパイラの変更が反映されていませんが、必要なタスクを実行する方法は示されています。 |