IPDRIVE 示例:演示自动化客户端应用程序
更新:2007 年 11 月
IPDRIVE 示例是简单自动化(原来为 OLE 自动化)客户端应用程序,它驱动 INPROC 示例应用程序。该示例测试由 INPROC(自动化进程内服务器)提供的功能。IPDRIVE 既可以驱动 INPROC 的进程内版本,也可以驱动 INPROC 的进程外或本地服务器版本,说明进程内组件的性能优点。有关更多信息,请参见 INPROC 示例。
说明: |
---|
在运行 IPDRIVE 之前,必须运行 INPROC 示例应用程序以便 INPROC 在注册表中注册它本身。 |
安全说明: |
---|
提供该示例代码是为了阐释一个概念,并不代表着最安全的编码实践,因此不应在应用程序或网站中使用该示例代码。对于超出本示例代码的预期用途以外的使用所造成的偶然或继发性损失,Microsoft 不承担任何责任。 |
获取示例和安装示例的说明:
在 Visual Studio 的“帮助”菜单上,单击“示例”。
有关更多信息,请参见定位示例文件。
示例的最新版本和完整列表可以从 Visual Studio 2008 Samples page(Visual Studio 2008 示例页面)联机获取。
还可以在计算机的硬盘上查找示例。默认情况下,示例和自述文件将复制到 \Program Files\Visual Studio 9.0\Samples\ 下的文件夹中。对于 Visual Studio 速成版,所有示例都位于联机位置。
生成并运行示例
生成并运行 IPDRIVE 示例
遵照说明运行、生成和注册 INPROC 示例。
打开解决方案 ipdrive.sln。
在“生成”菜单中单击“生成”。
将 IPDRIVE 作为独立的应用程序运行,以便它可以向系统注册其自身。
在运行 IPDRIVE 时,它将加载 INPROC 示例并创建变量映射对象,您可以使用 IPDRIVE 的接口操纵该映射对象。
变量映射对象十分类似于 MFC 的 CMap 集合。它用于将一个任意值映射到另一个任意值。每个值都是 VARIANT,是由类型和值组成的。IPDRIVE 的用户接口使您既可以访问类型也可以访问值。任何类型/值对都可被映射到任何其他的类型/值对。
IPDRIVE 还提供 Test1 和 Test2 两个按钮,它们可用于测试 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++ 向导、库和编译器中所做的更改,但仍演示了如何完成所需的任务。 |