Visual C++
This Visual C++ code example demonstrates how to create the connector and how to create a business function on the COM server. This example creates an AddressBook business function and uses GenCOM objects from C++.
#include <windows.h> #include <stdio.h> #include <objbase.h> #include <comdef.h> #include <wchar.h> #include addressbook.h #include AddressBook_i.c #include jdecomconnector2.h #include jdecomconnector2_i.c #define IPhone ID0100032 #define IMailing ID0100031 #define IAddress ID0100033 #define IEffectiveDate ID0100019 #define IParentAddress ID0100381 #define SERVER OLESTR("COMSRV") //Change to the COM server. #define ABNO 4242 //change this according to user input. HRESULT CreateConnector( IConnector **ppConnector ) { HRESULT hr = E_FAIL; *ppConnector = 0; //NOTE: Pass a COSERVERINFO struct to activate on a remote machine COSERVERINFO csi = {0, SERVER, 0, 0}; MULTI_QI mqi = { &IID_IConnector, 0, 0 }; hr = CoCreateInstanceEx(CLSID_Connector, 0, CLSCTX_LOCAL_SERVER, 0, // &csi, 1, &mqi); if(SUCCEEDED(hr) && SUCCEEDED(mqi.hr)) { ppConnector = reinterpret_cast<IConnector*>(mqi.pItf); } return hr; } HRESULT Login( IConnector **pConnector, IOneWorldInterface **ow, long *accessno ) { HRESULT hr; IDispatch *idsptch = 0; printf("Login started\n"); bstr_t User(L "Foo "), PassWord(L"Bar "), Env("DV9NIS2"); hr = (*pConnector)->Login(User,PassWord,Env,accessno ); if( !SUCCEEDED(hr)) { printf( "Login failed with hr = %x",hr); return E_FAIL; } _bstr_t bo("OneWorld_FunctionHelper.1"); hr=(*pConnector)->CreateBusinessObject(bo, *accessno, &idsptch ); if( !SUCCEEDED(hr)||(!ow)) { Printf("CreateBusinessObject(OneWorld.FunctionHelper.1) failed with hr %x",hr); return E_FAIL; } hr=idsptch->QueryInterface(IID_IOneWorldInterface, (void **)ow ); if(!SUCCEEDED(hr)||(!ow)) { Printf( QueryInterface for IOneWorldInterface failed with hr "%x",hr); return E_FAIL } printf("Login completed \n"); return S_OK; } HRESULT UseAddressBook(IConnector *pConnector, IOneWorldInterface *ow, long*accessno) { HRESULT hr; IJDEAddressBook *ab; IDispatch *idsptch; IPhone *phone; IMailing *Mailing; IAddress *Address; IEffectiveDate *EffectiveDate; IParentAddress ParentAddress; printf("Starting to use AddressBook\n"); _bstr_t bo("AddressBook.JDEAddressBook"); hr = pConnector->CreateBusinessObject(bo, *accessno, &idsptch); hr = idsptch->QueryInterface( IID_IJDEAddressBook, (void **&ab); if(!SUCCEEDED(hr)||(tab)) { printf( "CreateBusinessObject( AddressBook ) has failed with hr %x", hr); return E_FAIL; } return S_OK; }
This code creates the connector object and uses it to create a business function with its associated ParameterSet. The code then calls a method, Foo1, on the business object with the ParameterSet, the connector, and the access code returned by the act of logging on to the connector.
Int main(int argc, char *argv[]) { HRESULT hr; IOneWorldInterface *ow; long accessno; IConnector *pConnector; hr - CoInitializeEx(0, COINIT_MULTITHREADED); if(SUCCEEDED(hr)) ( hr = CreateConnector(&pConnector); if(SUCCEEDED(hr)) { Login( &pConnector, &ow, &accessno ); //Do more processing with AddressBook and logoff at the end. } CoUninitialize(); }