CLIENT.CXX

/*+---------------------------------------------------------------------------- 

Microsoft Windows Sample Program
Copyright 1994 - 1998 Microsoft Corporation. All rights reserved.

FILE: client.cxx

USAGE: client

PURPOSE: OLE client application uses a custom interface to call the
server and print "Hello".

FUNCTIONS: main() - Main entry point for the client application.

COMMENTS: The server program must be installed before running the client.
Run server.exe /REGSERVER to install the server program.

-----------------------------------------------------------------------------*/
#include <windows.h>
#include <stdio.h>
#include "ohello.h" // generated by MIDL from ohello.idl

// the class ID of the server exe
const CLSID CLSID_OHello =
{0xf9246031,0x9f33,0x11cd,{0xb2,0x3f,0x00,0xaa,0x00,0x33,0x9c,0xce}};

void PrintErrorMessage(HRESULT hr);

//+---------------------------------------------------------------------------
//
// Function: main
//
// Synopsis: Main entry point for the client application. First we
// call CoCreateInstance to create an instance of the server
// object. Next, we use the IHello custom interface to
// call the server object and print "Hello". After waiting
// 5 seconds, we call the server object to print "Goodbye".
// Finally, we release the IHello interface pointer and
// terminate.
//
//----------------------------------------------------------------------------
void __cdecl main(int argc, char *argv[])
{
HRESULT hr;
IHello *pHello = 0;

hr = CoInitialize(NULL);

if(SUCCEEDED(hr))
{
hr = CoCreateInstance(CLSID_OHello, 0, CLSCTX_LOCAL_SERVER, IID_IHello, (void **) &pHello);
if(SUCCEEDED(hr))
{
hr = pHello->HelloProc((unsigned char *) "Hello");

if(SUCCEEDED(hr))
{
printf("Successfully printed Hello.\n");
}
else
{
printf("IHello::HelloProc failed.\n");
PrintErrorMessage(hr);
}

printf(" <pausing for 5 sec>\n");
Sleep( 5000 ); // 5000 msec = 5 sec

hr = pHello->HelloProc((unsigned char *) "Goodbye");

if(SUCCEEDED(hr))
{
printf("Successfully printed Goodbye.\n");
}
else
{
printf("IHello::HelloProc failed.\n");
PrintErrorMessage(hr);
}

pHello->Release();
}
else
{
printf("CoCreateInstance failed.\n");
PrintErrorMessage(hr);

if(hr == REGDB_E_CLASSNOTREG)
printf("Run server.exe /REGSERVER to install the server program.\n");
}

CoUninitialize();
}
else
{
printf("CoInitialize failed.\n");
PrintErrorMessage(hr);
}
}