client.cpp
上传用户:bjlvip
上传日期:2010-02-08
资源大小:744k
文件大小:2k
源码类别:

Windows编程

开发平台:

Visual C++

  1. #define _WIN32_DCOM
  2. #include <iostream.h>
  3. #include <stdio.h>
  4. #include "componentcomponent.h" // Generated by MIDL
  5. const CLSID CLSID_InsideCOM = {0x10000002,0x0000,0x0000,{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01}};
  6. void main()
  7. {
  8.     IUnknown* pUnknown;
  9.     ISum* pSum;
  10.     HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
  11.     if(FAILED(hr))
  12.         cout << "CoInitializeEx failed. " << endl;
  13.     hr = CoCreateInstance(CLSID_InsideCOM, NULL, CLSCTX_INPROC_SERVER, 
  14.         IID_IUnknown, (void**)&pUnknown);
  15.     if(FAILED(hr))
  16.         cout << "CoCreateInstance failed. " << endl;
  17.     hr = pUnknown->QueryInterface(IID_ISum, (void**)&pSum);
  18.     if(FAILED(hr))
  19.         cout << "IID_ISum not supported. " << endl;
  20.     pUnknown->Release();
  21.     int sum;
  22.     hr = pSum->Sum(2, 3, &sum);
  23.     if(SUCCEEDED(hr))
  24.         cout << "Client: Calling Sum(2, 3) = " << sum << endl;
  25. IMoniker* pObjrefMoniker = 0;
  26. CreateObjrefMoniker(pUnknown, &pObjrefMoniker);
  27. IBindCtx* pBindContext = 0;
  28. CreateBindCtx(0, &pBindContext);
  29. OLECHAR* pString;
  30. pObjrefMoniker->GetDisplayName(pBindContext, NULL, &pString);
  31. wprintf(L"nDisplay name of objref moniker for pUnknown is n%snn", pString);
  32. cout << "Binding to object named by the objref moniker display name" << endl;
  33. ISum* pSum2 = 0;
  34. BIND_OPTS bopts = { 0, 0, 0, 0 };
  35. hr = CoGetObject(pString, &bopts, IID_ISum, (void**)&pSum2);
  36. CoTaskMemFree(pString);
  37.     hr = pSum2->Sum(5, 4, &sum);
  38. pSum2->Release();
  39. pSum->Release();
  40. pObjrefMoniker->Release();
  41.     CoUninitialize();
  42. }