日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DCOM 示例:演示如何远程调用 COM 对象

發布時間:2025/3/21 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DCOM 示例:演示如何远程调用 COM 对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
DCOM 示例說明如何從運行于不同計算機上的多個客戶端調用在 Windows 服務中實現的 COM 對象。它由三部分組成:
  • DrawServ — 實現 COM 對象的 Windows 服務。

  • ATLDraw — 連接到 DrawServ COM 對象的客戶端。

  • DrawCtl — ATLDraw 的管理版本。

安全說明:

提供該示例代碼是為了闡釋一個概念,并不代表著最安全的編碼實踐,因此不應在應用程序或網站中使用該示例代碼。對于超出本示例代碼的預期用途以外的使用所造成的偶然或繼發性損失,Microsoft 不承擔任何責任。

獲取示例和安裝示例的說明:

  • 在 Visual Studio 的“幫助”菜單上,單擊“示例”

    有關更多信息,請參見定位示例文件

  • 示例的最新版本和完整列表可以從 Visual Studio 2008 Samples page(Visual Studio 2008 示例頁面)聯機獲取。

  • 還可以在計算機的硬盤上查找示例。默認情況下,示例和自述文件將復制到 /Program Files/Visual Studio 9.0/Samples/ 下的文件夾中。對于 Visual Studio 速成版,所有示例都位于聯機位置。

?生成并運行示例

所有計算機必須運行 Windows 2000 或更高版本才能運行此示例。

生成并運行此示例

  • 打開解決方案 DCOM.sln。

  • “生成”菜單中,單擊“生成解決方案”

  • 將 DrawServ.exe 和 ATLDraw.exe 或 DrawCtl.dll 復制到要在其上運行此示例的每臺計算機。通過運行帶命令行參數 /RegServer-RegServer(這不區分大小寫)的 DrawServ,在每臺計算機上注冊服務器。例如:

    復制代碼C:/ATL> DrawServ /RegServer

    (必須注冊 ATL.DLL 才能正常工作。) 必須將服務器復制到每個客戶端以便在每個客戶端上注冊服務器的 CLSID 和服務器類型庫。

  • 通過使用“控制面板”中的“服務”圖標,啟動服務器上的服務。

  • 在每個客戶端,使用 DCOMCNFG 實用工具(從命令行運行它)選擇 DrawServ 類的“屬性”。從“位置”選項卡中選擇“在下列計算機上運行應用程序”。輸入要在其上運行服務器對象的計算機的名稱。

  • 運行 ATLDraw 并從每個客戶端的菜單中選擇“服務器連接”。通過按住鼠標左鍵并沿直線拖動,在客戶端窗口中繪制線條。繪制的線條應顯示在連接到同一服務器的每個客戶端上。也可以使用“視圖”中的“顏色”菜單選項來更改每個客戶端的顏色。

  • 如果 DrawServ 示例的路徑包含空格,它將不能正確注冊。解決此問題的一個方法是編輯相應的 .rgs 文件,并在 %MODULE% 的所有匹配項兩側添加單引號。例如,將包含以下內容的一行:

    復制代碼InprocServer32 = s %MODULE%

    更改為下面的內容:

    復制代碼InprocServer32 = s '%MODULE%'?關鍵字

    此示例使用以下關鍵字:

    AfxMessageBox、ASSERT_VALID、ATLASSERT、AtlUnadvise、BEGIN_COM_MAP、BEGIN_CONNECTION_POINT_MAP、BEGIN_INTERFACE_MAP、BEGIN_MSG_MAP、BEGIN_OBJECT_MAP、CComCoClass、CComControl、CComModule::GetClassObject、CComModule::GetLockCount、CComModule::Init、CComModule::RegisterServer、CComModule::Term、CComModule::Unlock、CComModule::UnregisterServer、CComModule::UpdateRegistryFromResource、CComObjectRoot、CDocument::OnNewDocument、CFrameWnd::AssertValid、CFrameWnd::DockControlBar、CFrameWnd::Dump、CFrameWnd::EnableDocking、CFrameWnd::OnCreate、CFrameWnd::PreCreateWindow、CloseServiceHandle、CoCreateInstance、CoCreateInstanceEx、CoInitialize、CoInitializeSecurity、COM_INTERFACE_ENTRY、COM_INTERFACE_ENTRY_IMPL、COM_INTERFACE_ENTRY_IMPL_IID、COM_INTERFACE_ENTRY2、CONNECTION_POINT_ENTRY、ConnectSink、ControlService、CoUninitialize、CProxyIDrawServ、CreatePen、CreateService、CStatusBar::SetIndicators、CToolBar::EnableDocking、CToolBar::LoadToolBar、CView::DoPreparePrinting、CView::OnLButtonUp(nFlags, point)、CView::PreCreateWindow、CWinApp::AddDocTemplate、CWinApp::LoadStdProfileSettings、CWinApp::ParseCommandLine、CWinApp::ProcessShellCommand、CWindow::SetCapture、DECLARE_GET_CONTROLLING_UNKNOWN、DECLARE_REGISTRY_RESOURCEID、DeleteObject、DeregisterEventSource、DisableThreadLibraryCalls、Disconnect、DisconnectSink、END_COM_MAP、END_CONNECTION_POINT_MAP、END_INTERFACE_MAP、END_OBJECT_MAP、GetModuleFileName、IConnectionPointContainerImpl、IDataObjectImpl、IDispatchImpl、IMPLEMENT_DYNCREATE、Install、INTERFACE_PART、IObjectSafetyImpl、IOleControlImpl、IOleInPlaceActiveObjectImpl、IOleInPlaceObjectWindowlessImpl、IOleObjectImpl、IPersistStorageImpl、IPersistStreamInitImpl、IProvideClassInfo2Impl、IQuickActivateImpl、ISupportErrorInfo、IViewObjectExImpl、IViewObjectExImpl::Draw、LineTo、LoadString、LogEvent、MESSAGE_HANDLER、MessageBox、MoveToEx、OBJECT_ENTRY、OffsetRect、OpenSCManager、OpenService、PostThreadMessage、PtInRect、QueryInterface、RegisterEventSource、ReleaseDC、ReportEvent、SelectObject、SetCapture、SetServiceStatus、SetWindowOrgEx、StartServiceCtrlDispatcher、Uninstall

    總結

    以上是生活随笔為你收集整理的DCOM 示例:演示如何远程调用 COM 对象的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。