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

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