PowerBuilder编程Win32API函数调用.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:4 大小:78KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

PowerBuilder编程Win32API函数调用.pdf

PowerBuilder编程Win32API函数调用.pdf

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Win32API函数与PB编程在PB编程实践中,如何获取当前目录?如何得到光盘的盘符?如何控制由Run运行的程序?对于此类PB不能直接解决的问题,可以求助于Win32API函数。其实PB编程的大部分FAQ都可以通过Win32API函数来解决。下面是一些典型的应用。1.如何使PB窗口总在最上层(AlwaysOnTop)通过SetWindowPos函数把窗口的显示层次修改为HWND—TOPMOST,就可使指定窗口永远不会被其它窗口覆盖,该函数声明为:FunctionLongSetWindowPos(Longhwnd,Longord,Longx,Longy,Longdx,Longdy,Longuflag)Library″user32″参数1为要顶层显示的窗口句柄,参数2指定显示的层次,参数7为附加选项,其余参数指定窗口位置和大小,均可忽略。在窗口的Open或Activate事件中加入如下函数调用:SetWindowPos(Handle(This),-1,0,0,0,0,3)参数2取-1表示在最顶层显示窗口,取1表示在最底层显示;最后一个参数若取1,表示窗口大小保持不变,取2表示保持位置不变,因此,取3(=1+2)表示大小和位置均保持不变,取0表示将窗口的大小和位置改变为指定值。2.在PB中如何获得光盘盘符通过GetDriveType函数可以获取驱动器(如:软驱、硬盘、光驱、网络映射驱动器等)的信息,该函数声明为:FunctionUintGetDriveTypeA(Stringdrive)Library″kernel32.dll″参数为一个盘符(如“C:"),返回值:1表示未知,2表示软驱,3表示本地硬盘,4表示网络驱动器,5表示光驱。因此如下代码可以获得光盘的盘符:Fori=Asc(′D′)toAsc(′Z′)//列举所有可能的CDROM驱动器IfGetDriveTypeA(Char(i)+″:″)=5Then//若找到CDROMMessageBox(″CDROM″,Char(i)+″:″)//显示光盘盘符Exit//退出列举EndIfNext3.在PB中如何获取目录信息⑴获取当前目录。通过GetCurrentDirectory函数可以获取当前目录,该函数声明为:FunctionUlongGetCurrentDirectoryA(Ulongbuflen,refStringdir)Library″kernel32.dll″参数2为接收当前目录的字符缓冲区,前面必须加ref表示地址引用;参数1用来指定字符缓冲区的长度。调用过程为:Stringcurdircurdir=Space(256)//为字符缓冲区开辟内存空间GetCurrentDirectoryA(256,curdir)MessageBox(″CurrentDirectory″,curdir)⑵获取Windows及系统目录。要用到GetWindowsDirectory和GetSystemDirectory两个函数,须作如下声明:FunctionUintGetWindowsDirectoryA(refStringdir,Uintbuflen)Library″kernel32.dll″FunctionUintGetSystemDirectoryA(refStringdir,Uintbuflen)Library″kernel32.dll″4.在PB中如何注销当前用户、关闭计算机、重启计算机通过ExitWindowsEx函数可实现这三个功能,首先作如下声明:FunctionLongExitWindowsEx(Longuflag,Longnouse)Library″user32.dll″参数2保留不用,可取0;参数1取0可以注销当前用户,取1可以关闭计算机,取2可以重启计算机,其值再加4表示强制结束“未响应"的进程。5.控制由Run运行的程序(简称Run程序)在PB程序设计中,可以用Run()来运行一些程序。比如用户按了F1,就运行一个chm文件。但Run程序无法与PB主程序协调工作,若用户按了多次F1,就会启动Run程序的多个实例,主程序退出时,Run程序依然运行。可以用如下函数来使它们协调工作:FunctionUlongFindWindowA(Ulongclassname,Stringwindowname)Library″user32.dll″FunctionLongSetParent(Longchildwin,Longparentwin)Library″user32.dll″⑴使