Description
The IPB_VM interface loads PowerBuilder applications in third-party applications and interoperates with the PowerBuilder virtual machine (PBVM).
Methods
IPB_VM has two methods:
Description
Creates an IPB_Session object that can be used to call PowerBuilder functions.
Syntax
CreateSession(LPCTSTR applicationName, LPCTSTR* libraryList, pbuint numLibs, IPB_Session** session)
|
Argument |
Description |
|---|---|
|
applicationName |
The name of the current application object in lowercase |
|
libraryList |
The library list of the PowerBuilder application that contains the objects and functions to be called |
|
numLibs |
The number of libraries in the library list |
|
session |
A pointer to IPB_Session*, which will return the current IPB_Session pointer after the call |
Return value
PBXRESULT. PBX_OK for success.
Examples
This example creates an IPB_Session with the simple library list mydemo.pbl:
IPB_Session* session;
IPB_VM* vm = NULL;
fstream out;
ifstream in;
PBXRESULT ret;
HINSTANCE hinst=LoadLibrary("pbvm190.dll");
if ( hinst== NULL) return 0;
out<< "Loaded PowerBuilder VM successfully!"<<endl;
P_PB_GetVM getvm = (P_PB_GetVM)GetProcAddress
(hinst, "PB_GetVM");
if (getvm == NULL) return 0;
getvm(&vm);
if (vm == NULL) return 0;
static const char *liblist[] =
{
"mydemo.pbl"
};
ret= vm->CreateSession("mydemo", liblist, 1, &session);
if (ret != PBX_OK)
{
out << "Create session failed." << endl;
return 0;
}
out << "Create session succeeded!" <<endl;See also
Description
Runs the specified application.
Syntax
RunApplication(LPCTSTR applicationName, LPCTSTR* libraryList, pbuint numLibs, LPCSTR commandLine, IPB_Session** session)
|
Argument |
Description |
|---|---|
|
applicationName |
The name of the application object to be run, in lowercase |
|
libraryList |
The library list of the application |
|
numLibs |
The number of libraries in the library list |
|
commandLine |
Parameters to be passed to the application object |
|
session |
A pointer to IPB_Session*, which will return the current IPB_Session pointer after the call |
Return value
PBXRESULT. PBX_OK for success.
Examples
This code fragment loads the PowerBuilder VM and runs an application called runapp that uses one library, runapp.pbd. It passes in a command line with two arguments:
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
LPCTSTR szHello = "Hello world";
// Provide command line parameters (employee ids)
// to be passed to the PowerBuilder application
LPCTSTR szcommandline = "102 110";
int wmId, wmEvent, ret;
PAINTSTRUCT ps;
HDC hdc;
switch (message)
{
case WM_CREATE:
{
hPBVMInst = ::LoadLibrary("pbvm190.dll");
P_PB_GetVM getvm = (P_PB_GetVM)
GetProcAddress(hPBVMInst,"PB_GetVM");
IPB_VM* vm = NULL;
getvm(&vm);
static const char *liblist [] =
{"runapp.pbd"};
vm->RunApplication("runapp", liblist, 1,
szcommandline, &session);
break;
}See also


