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

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