Tech Articles


How to get the application path


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)
There are no comments posted here yet

Find Articles by Tag

Variable SDK PDF PowerServer Mobile REST Filter OLE Application File Database Painter WebBrowser Transaction Model DataType PowerBuilder (Appeon) BLOB TLS/SSL OrcaScript PFC Import JSON Error Database Table Interface NativePDF Web Service Proxy Windows OS Authorization ActiveX Script Sort .NET DataStore Design Performance DataWindow PowerBuilder Compiler UI Modernization IDE Encryption PDFlib Validation Linux OS 64-bit .NET Std Framework PowerServer Web Text Azure XML JSONParser PBNI Service Deployment PBDOM Database SQL MessageBox Charts Elevate Conference ODBC License Database Table Data UI Themes PostgreSQL ODBC driver C# Excel Icon InfoMaker SqlExecutor Event Handling Android Debugger Debugging Visual Studio RESTClient Outlook SOAP CrypterObject Testing PBVM SVN Jenkins Expression Syntax Messagging Import Branch & Merge Database Object Graph Open Source COM UI API Source Control Source Code Array Mobile Event Handler Window Stored Procedure TreeView Configuration Repository Automated Testing Database Profile CoderObject Menu Oracle TortoiseGit External Functions Web API 32-bit Export JSON Export GhostScript iOS WinAPI RibbonBar PowerScript (PS) Platform RichTextEdit Control DevOps Authentication HTTPClient SQL Server OAuth 2.0 DataWindow JSON Migration Resize Class PostgreSQL Event Database Connection Debug OAuth PowerBuilder DragDrop Installation RibbonBar Builder Encoding Database Table Schema Data JSON Trial Windows 10 Icons CI/CD DLL SnapDevelop .NET Assembly SqlModelMapper TFS Bug Git SnapObjects JSONGenerator