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

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