📄 client.cpp
字号:
#define _WIN32_DCOM
#include <iostream.h>
#include <stdio.h>
#include "component\component.h" // Generated by MIDL
const CLSID CLSID_InsideCOM = {0x10000002,0x0000,0x0000,{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01}};
void main()
{
IUnknown* pUnknown;
ISum* pSum;
HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
if(FAILED(hr))
cout << "CoInitializeEx failed. " << endl;
hr = CoCreateInstance(CLSID_InsideCOM, NULL, CLSCTX_INPROC_SERVER,
IID_IUnknown, (void**)&pUnknown);
if(FAILED(hr))
cout << "CoCreateInstance failed. " << endl;
hr = pUnknown->QueryInterface(IID_ISum, (void**)&pSum);
if(FAILED(hr))
cout << "IID_ISum not supported. " << endl;
pUnknown->Release();
int sum;
hr = pSum->Sum(2, 3, &sum);
if(SUCCEEDED(hr))
cout << "Client: Calling Sum(2, 3) = " << sum << endl;
IMoniker* pObjrefMoniker = 0;
CreateObjrefMoniker(pUnknown, &pObjrefMoniker);
IBindCtx* pBindContext = 0;
CreateBindCtx(0, &pBindContext);
OLECHAR* pString;
pObjrefMoniker->GetDisplayName(pBindContext, NULL, &pString);
wprintf(L"\nDisplay name of objref moniker for pUnknown is \n%s\n\n", pString);
cout << "Binding to object named by the objref moniker display name" << endl;
ISum* pSum2 = 0;
BIND_OPTS bopts = { 0, 0, 0, 0 };
hr = CoGetObject(pString, &bopts, IID_ISum, (void**)&pSum2);
CoTaskMemFree(pString);
hr = pSum2->Sum(5, 4, &sum);
pSum2->Release();
pSum->Release();
pObjrefMoniker->Release();
CoUninitialize();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -