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( );