PBInvoke quick start guide

[ Home / PBInvoke library ]


Add PBInvoke library to your project

  • Unpack PbInvoke.PBL and libPbInvoke.DLL for your PowerBuilder version (or closest older version) to your project folder.
  • Add PbInvoke.PBL to application's library list.
  • Make a migration.
  • Make a full build.

Initialize PBInvoke

If libPbInvoke.DLL is not in the PATH nor in the current directory then you'll need to specify the path to it in application's open event before any other call to the library:
n_pi_loader lnv_loader  // autoinstantiated
lnv_loader.of_preload_dll("modules\libPBInvoke.dll")
Note, you can change the path only, and not the DLL name because it is hard-coded in the external function declarations.

Declare DLL function

This code can be placed in any convenient script. Usually it's executed once per application session and its results are cached somewhere (e.g. in instance/shared variables).
n_pi_core lnv_core
n_pi_library lnv_user32 
n_pi_method lnv_SendMessage 

lnv_user32 = lnv_core.of_declare_library("user32.dll")

lnv_SendMessage = lnv_user32.of_declare_method(&
	"LRESULT WINAPI SendMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) ")
Note, that the declaration is a C function prototype which can be directly copied from C header files or from documentation such as MSDN.

HWND, UINT etc. are Windows types. Many such types are predefined in PBInvoke. But if you get "Type 'XXXX' not found" error message, then you'll need to define the type yourself before using it in declarations.

n_pi_core lnv_core
lnv_core.of_declare("typedef int NEWTYPE"); // this is just an example; for real typedef you'll need to 
                                            // see the documentation or header files for DLL you call.

...of_declare_method(...)

Call DLL function

long ll_result
ll_result = lnv_SendMessage.of_invoke(Handle(w_somewin), n_pi_winapi.WM_KEYDOWN, 9 /*Tab*/, 0) 
n_pi_winapi provides some WinAPI constants.

More samples

See the Samples folder in the archive for more complex examples with structures, callbacks etc.

See also

  • Calling DLL functions using PBInvoke
  • Handling strings (char*, wchar_t*)
  • WinAPI constants and types
  • Working with C/C++ structures/unions
  • Working with callbacks
  • PBInvoke
    Home
    Download Demo
    Documentation
    Purchase

    See Also
    Calling DLL functions using PBInvoke
    Handling strings (char*, wchar_t*)
    WinAPI constants and types
    Working with C/C++ structures/unions
    Working with callbacks


    Copyright (C) 1999 - 2017 Anatoly Moskovsky Report a site problem