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

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