PowerBuilder – Application path
So you need to check some file you have deployed with your application and you have chosen to put it in the same folder as the executable. Sure, I’ll just check the current folder when the application launches and I’ll have what I need. Wrong. Since an application can be launched with a ‘Start In’ folder this is not always the correct place. Instead use the GetModuleFileName API call
First the external function declaration:
FUNCTION int GetModuleFileNameW(& ulong hinstModule, & REF string lpszPath, & ulong cchPath) LIBRARY "kernel32" // or for those of you way back in time FUNCTION int GetModuleFileNameA(& ulong hinstModule, & REF string lpszPath, & ulong cchPath) LIBRARY "kernel32"
Now in your script do the following:
string ls_Path unsignedlong lul_handle ls_Path = space(1024) lul_handle = Handle(GetApplication()) GetModuleFilenameW(lul_handle, ls_Path, 1024)// or GetModuleFilenameA if appropriate
You can use the PFC fileservice to easily strip off the exe name from ls_path or do it yourself.