近日做程序的时候碰到要获得程序的绝对路径,找了很多的网站,终于找到了
调用API函数
怎样得到程序运行时的绝对路径?
问:我如何能在PowerBuilder中得到程序运行时的绝对路径?
答:用Windows的API函数GetModuleFileName()来实现。
①定义API:
Function ulong GetModuleFileName(ulong hModule,ref string lpFileName,ulong nSize) LIBRARY "kernel32.dll" ALIAS FOR "GetModuleFileNameA"
②脚本:
string str_AppPath
integer int_ret
str_AppPath = Space (128)
int_ret = GetModuleFileName (Handle (GetApplication ()), str_Apppath, 128)
说明:要编译成可执行文件*.exe才可用,否则得到的是Powerbuilder的pb60.exe或PB050.exe的路径。程序路径保存在变量ls_AppPath中。
[注]GetModuleFileName()函数
说明:
获取一个已装载模板的完整路径名称。
返回值:
ulong,如执行成功,返回复制到lpFileName的实际字符数量;零表示失败。
参数
类型及说明
hModule
ulong,一个模块的句柄。可以是一个DLL模块,或者是一个应用程序的实例句柄。
lpFileName
String,指定一个字串缓冲区,要在其中容纳文件的用NULL字符中止的路径名,hModule模块就是从这个文件装载进来的。
nSize
ulong,装载到缓冲区lpFileName的最大字符数量。