IPDRIVE 範例:示範 Automation 用戶端應用程式
更新:2007 年 11 月
IPDRIVE 範例是一個簡單的 Automation (之前為 OLE Automation) 用戶端應用程式,可以驅動 INPROC 範例應用程式。它會測試 INPROC (一種 Automation 同處理序伺服程式) 所提供的功能。IPDRIVE 可以同時驅動 INPROC 的同處理序版本、跨處理序 (Out-Of-Process) 版本或本機伺服程式 (Local Server) 版本,以便示範同處理序元件的效能優點。如需詳細資訊,請參閱 INPROC 範例。
注意事項: |
---|
在執行 IPDRIVE 之前,您必須先執行 INPROC 範例應用程式,讓 INPROC 將自己本身登錄在登錄中。 |
安全性注意事項: |
---|
這個程式碼範例僅供概念說明之用,同時因為範例中的程式碼撰寫並沒有周全的顧及所有安全性問題,所以本範例不適用於實際執行的應用程式或網站中。如果使用者擅自將範例程式碼用於其他意圖而導致連帶事件或重大損害時,Microsoft 將不承擔任何責任。 |
若要取得範例和指示以便進行安裝:
按一下 Visual Studio [說明] 功能表上的 [範例]。
如需詳細資訊,請參閱尋找範例檔案。
最新版的完整範例清單可從 Visual Studio 2008 範例網頁 (英文) 取得。
您也可以將範例置於電腦硬碟中。根據預設,範例和讀我檔案都會複製到 \Program Files\Visual Studio 9.0\Samples\ 下的資料夾中。對於所有的 Visual Studio Express 版,所有範例都可在線上找到。
建置和執行範例
若要建置並執行 IPDRIVE 範例
依照下列指示,執行、建置和登錄 INPROC 範例。
開啟 ipdrive.sln 方案。
在 [建置] 功能表上,按一下 [建置]。
將 IPDRIVE 當做獨立的應用程式執行一次,使其將自己登錄到系統中。
當您執行 IPDRIVE 時,它會載入 INPROC 範例,並建立讓您可使用 IPDRIVE 介面來管理的 Variant 對應物件。
Variant 對應物件很像是 MFC 的 CMap 集合,它是用來將一個任意值對應到另一個任意值。每一個值都是 VARIANT,其中含有一個型別和一個值。IPDRIVE 使用者介面可以讓您同時存取型別和值。任何「型別/值」組都可以對應到任何其他的「型別/值」組。
IPDRIVE 也會提供 Test1 和 Test2 兩個按鈕,用來測試 INPROC 伺服器應用程式的效能。大體上,這些功能都會測試 Automation 函式呼叫的耗用情形。具有 INPROC 的本機伺服程式版本的函式呼叫耗用情形,會比同處理序版本的耗用情形來得多。本機伺服程式會在自己的位址空間中以不同可執行檔執行。所以,它需要遠端程序呼叫 (RPC) 來存取它的物件的方法和屬性。但是,同處理序伺服程式會以 DLL 方式載入用戶端的位址空間中,而不需要使用 RPC。Test1 與 Test2 按鈕都會執行整整五秒鐘的時間,然後顯示呼叫的數目。呼叫越多,表示效能愈好。
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++ 精靈、程式庫以及編譯器方面的變更,不過還是可以示範如何完成您要進行的工作。 |