This example shows how to get the application path for development and deployment environments. This is compatible with PB 12.6.
I recommend to use a NVO to develop this functionality.
1. First declare the Local External Functions:
FUNCTION int GetModuleFileNameW(&
ulong hinstModule, &
REF string lpszPath, &
ulong cchPath) LIBRARY "KERNEL32.DLL"
FUNCTION ulong GetCurrentDirectoryW (&
ulong textlen, &
REF string dirtext) LIBRARY "KERNEL32.DLL"
2. And then create the function of_getapplicationpath():
ULong lul_rc, lul_size
LONG ll_last, ll_i, ll_handle
STRING ls_ApplicationPath = Space (255)
STRING ls_separator = "\"
//Get the handle of the application
ll_handle = Handle (GetApplication ())
//When handle is 0, it is in Development Environment.
IF ll_handle = 0 THEN
lul_rc = GetCurrentDirectoryW(255, ls_ApplicationPath)
Return ls_ApplicationPath
END IF
//When it is in Deployment Environment
GetModuleFileNameW(ll_Handle, ls_ApplicationPath, 254)
ll_i = 0
Do
ll_last = ll_i
ll_i = Pos (ls_ApplicationPath, ls_separator, ll_i + 1)
Loop Until ll_i = 0
Return Left (ls_ApplicationPath, ll_last - 1)
I hope it helps.
Comments (0)