Sample program

The following example shows how to incorporate the BlueZone Host Automation Object into a custom C/C++ application:

// add BZWhll_i.c to the project as a source file
#include "BZWhll.h"
IWhllObj *pHost = NULL; // pointer to BHAO
// before using BHAO make sure COM is available and initialized
HRESULT hr = CoInitialize( NULL );
if ( FAILED(hr) )
     return 0;
// create an instance of the BHAO object
hr = CoCreateInstance(  
               CLSID_WhllObj, 
               NULL, 
               CLSCTX_INPROC_SERVER,
               IID_IWhllObj,
               (void **)&pHost );
if ( SUCCEEDED(hr) )
{
     // pHost can now be used to access the host system.
     // For purposes of this example, we will just login and logoff
     // of a zSeries system.
     int nRetval; // method return code
     char Buf[ 2048 ]; // 2K buffer
     // connect to the zSeries via BlueZone Mainframe Display
     pHost->Connect( "A", &nRetval );
     if ( nRetval == S_OK )
     {
          // login to the zSeries
          pHost->SendKey( L"logon guest<Enter>", &nRetval );
          pHost->WaitReady( 10, 1, &nRetval );
          pHost->SendKey( L"password<Enter>", &nRetval );
          pHost->WaitReady( 10, 1, &nRetval );
          pHost->SendKey( L"<Enter>", &nRetval );
          pHost->WaitReady( 10, 1, &nRetval );
          // copy the host screen and display in a message box
          pHost->ReadScreen( Buf, 1920, 1, 1, &nRetval );
          MessageBox( NULL, Buf, "BHAO Sample Program", MB_OK );
          // logoff of zSeries
          pHost->SendKey( L"<PF3>", &nRetval );
          pHost->WaitReady( 10, 1, &nRetval );
          pHost->SendKey( L"logoff<Enter>", &nRetval );
          pHost->WaitReady( 10, 1, &nRetval );
     }
     else
     {
          char ErrorMsg[ 64 ];
          wsprintf( ErrorMsg, "Error %d connecting to host system.", nRetval );
          MessageBox( NULL, ErrorMsg, "Connect Error:", MB_OK );
     }
     // when done release the BlueZone Host Automation object
     pHost->Release( );
}
// don't forget to uninitialize COM when you are done
CoUninitialize( );