client.cpp

来自「经验交流,从网上下载的好东西望大家分享」· C++ 代码 · 共 60 行

CPP
60
字号
// client.cpp
#define _WIN32_DCOM
#include <iostream.h>
#include "Component\component.h"

void main()
{
	cout << "Client: Calling CoInitialize()" << endl;
	CoInitializeEx(NULL, COINIT_MULTITHREADED);
		
	IUnknown* pUnknown = 0;
	ISum* pSum = 0;

	cout << "Client: Calling CoGetClassObject() " << endl;
	IClassFactory* pClassFactory = 0;
	CoGetClassObject(CLSID_InsideCOM, CLSCTX_LOCAL_SERVER, NULL, IID_IClassFactory, (void**)&pClassFactory);

	cout << "Client: CreateInstance() " << endl;
	pClassFactory->CreateInstance(NULL, IID_IUnknown, (void**)&pUnknown);

	cout << "Client: Release() " << endl;
	pUnknown->Release();
	pUnknown = 0;

	cout << "Client: CreateInstance again() " << endl;
	pClassFactory->CreateInstance(NULL, IID_IUnknown, (void**)&pUnknown);
	pClassFactory->Release();

//	cout << "Client: Calling CoCreateInstance() " << endl;
//	CoCreateInstance(CLSID_InsideCOM, NULL, CLSCTX_LOCAL_SERVER, IID_IUnknown, (void**)&pUnknown);

	cout << "Client: Calling QueryInterface() for ISum on " << pUnknown << endl;
	HRESULT hr = pUnknown->QueryInterface(IID_ISum, (void**)&pSum);

	if(FAILED(hr))
		cout << "QueryInterface FAILED" << endl;

	cout << "Client: Calling Release() for pUnknown" << endl;
	hr = pUnknown->Release();

	cout << "Client: pSum = " << pSum << endl;

	int sum;
	hr = pSum->Sum(4, 9, &sum);
	if(SUCCEEDED(hr))
		cout << "Client: Calling Sum() return value is " << sum << endl;

	myDataType test;
	test.x = 5;
	test.y = 3;
	hr = pSum->Sum2(test, &sum);
	if(SUCCEEDED(hr))
		cout << "Client: Calling Sum2() return value is " << sum << endl;

	cout << "Client: Calling Release() for pSum" << endl;
	hr = pSum->Release();

	cout << "Client: Calling CoUninitialize()" << endl;
	CoUninitialize();
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?