All pastes #414061 Raw Edit

Unnamed

public cpp v1 · immutable
#414061 ·published 2007-03-28 20:46 UTC
rendered paste body
[uuid(2573F8F4-CFEE-101A-9A9F-00AA0034282 0)]library LHello{// bring in the master libraryimportlib("actimp.tlb");importlib("actexp.tlb");// bring in my interfaces#include "pshlo.idl"[uuid(2573F8F5-CFEE-101A-9A9F-00AA0034282 0)]cotype THello{interface IHello;interface IPersistFile;};};[exe,uuid(2573F890-CFEE-101A-9A9F-00AA0034282 0)]module CHelloLib{// some code related header filesimportheader();importheader();importheader();importheader("pshlo.h");importheader("shlo.hxx");importheader("mycls.hxx");// needed typelibsimportlib("actimp.tlb");importlib("actexp.tlb");importlib("thlo.tlb");[uuid(2573F891-CFEE-101A-9A9F-00AA0034282 0),aggregatable]coclass CHello{cotype THello;};};#include "ipfix.hxx"extern HANDLE hEvent;class CHello : public CHelloBase{public:IPFIX(CLSID_CHello);CHello(IUnknown *pUnk);~CHello();HRESULT __stdcall PrintSz(LPWSTR pwszString);private:static int cObjRef;};#include#include#include#include#include "thlo.h"#include "pshlo.h"#include "shlo.hxx"#include "mycls.hxx"int CHello::cObjRef = 0;CHello::CHello(IUnknown *pUnk) : CHelloBase(pUnk){cObjRef++;return;}HRESULT __stdcall CHello::PrintSz(LPWSTR pwszString){printf("%ws\n", pwszString);return(ResultFromScode(S_OK));}CHello::~CHello(void){// when the object count goes to zero, stop the servercObjRef--;if( cObjRef == 0 )PulseEvent(hEvent);return;}#include#include#include "pshlo.h"#include "shlo.hxx"#include "mycls.hxx"HANDLE hEvent;int _cdecl main( int argc, char* argv[] ){ULONG ulRef;DWORD dwRegistration;CHelloCF *pCF = new CHelloCF();hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);// Initialize the OLE librariesCoInitializeEx(NULL, COINIT_MULTITHREADED);CoRegisterClassObject(CLSID_CHello, pCF, CLSCTX_LOCAL_SERVER,REGCLS_MULTIPLEUSE, &dwRegistration);// wait on an event to stopWaitForSingleObject(hEvent, INFINITE);// revoke and release the class objectCoRevokeClassObject(dwRegistration);ulRef = pCF->Release();// Tell OLE we are going away.CoUninitialize();return(0); }extern CLSID CLSID_CHello;extern UUID LIBID_CHelloLib;CLSID CLSID_CHello = { /* 2573F891-CFEE-101A-9A9F-00AA00342820 */0x2573F891,0xCFEE,0x101A,{ 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }};UUID LIBID_CHelloLib = { /* 2573F890-CFEE-101A-9A9F-00AA00342820 */0x2573F890,0xCFEE,0x101A,{ 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }};#include#include#include#include#include#include "pshlo.h"#include "shlo.hxx"#include "clsid.h"int _cdecl main(int argc, char * argv[] ){HRESULT hRslt;IHello *pHello;ULONG ulCnt;IMoniker *pmk;WCHAR wcsT[_MAX_PATH];WCHAR wcsPath[2 * _MAX_PATH];// get object pathwcsPath[0] = '\0';wcsT[0] = '\0';if( argc > 1) {mbstowcs(wcsPath, argv[1], strlen(argv[1]) + 1);wcsupr(wcsPath);}else {fprintf(stderr, "Object path must be specified\n");return(1);}// get print stringif(argc > 2)mbstowcs(wcsT, argv[2], strlen(argv[2]) + 1);elsewcscpy(wcsT, L"Hello World");printf("Linking to object %ws\n", wcsPath);printf("Text String %ws\n", wcsT);// Initialize the OLE librarieshRslt = CoInitializeEx(NULL, COINIT_MULTITHREADED);if(SUCCEEDED(hRslt)) {hRslt = CreateFileMoniker(wcsPath, &pmk);if(SUCCEEDED(hRslt))if(SUCCEEDED(hRslt))hRslt = BindMoniker(pmk, 0, IID_IHello, (void **)&pHello);if(SUCCEEDED(hRslt)) {// print a string outpHello->PrintSz(wcsT);Sleep(2000);ulCnt = pHello->Release();}elseprintf("Failure to connect, status: %lx", hRslt);// Tell OLE we are going away.CoUninitialize();}return(0);}