




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Win32API函数与PB编程在PB编程实践中,如何获取当前目录?如何得到光盘的盘符?如何控制由Run运行的程序?对于此类PB不能直接解决的问题,可以求助于Win32API函数。其实PB编程的大部分FAQ都可以通过Win32API函数来解决。下面是一些典型的应用。1、如何使PB窗口总在最上层(AlwaysOnTop)通过SetWindowPos函数把窗口的显示层次修改为HWNDTOPMOST,就可使指定窗口永远不会被其它窗口覆盖,该函数声明为:FunctionLongSetWindowPos(Longhwnd,Longord,Longx,Longy,Longdx,Longdy,Longuflag)Libraryuser32参数1为要顶层显示的窗口句柄,参数2指定显示的层次,参数7为附加选项,其余参数指定窗口位置和大小,均可忽略。在窗口的Open或Activate事件中加入如下函数调用:SetWindowPos(Handle(This),1,0,0,0,0,3)参数2取1表示在最顶层显示窗口,取1表示在最底层显示;最后一个参数若取1,表示窗口大小保持不变,取2表示保持位置不变,因此,取3(=12)表示大小和位置均保持不变,取0表示将窗口的大小和位置改变为指定值。2、在PB中如何获得光盘盘符通过GetDriveType函数可以获取驱动器(如:软驱、硬盘、光驱、网络映射驱动器等)的信息,该函数声明为:FunctionUintGetDriveTypeA(Stringdrive)Librarykernel32.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)Librarykernel32.dll参数2为接收当前目录的字符缓冲区,前面必须加ref表示地址引用;参数1用来指定字符缓冲区的长度。调用过程为:Stringcurdircurdir=Space(256)/为字符缓冲区开辟内存空间GetCurrentDirectoryA(256,curdir)MessageBox(CurrentDirectory,curdir)获取Windows及系统目录。要用到GetWindowsDirectory和GetSystemDirectory两个函数,须作如下声明:FunctionUintGetWindowsDirectoryA(refStringdir,Uintbuflen)Librarykernel32.dllFunctionUintGetSystemDirectoryA(refStringdir,Uintbuflen)Librarykernel32.dll4、在PB中如何注销当前用户、关闭计算机、重启计算机通过ExitWindowsEx函数可实现这三个功能,首先作如下声明:FunctionLongExitWindowsEx(Longuflag,Longnouse)Libraryuser32.dll参数2保留不用,可取0;参数1取0可以注销当前用户,取1可以关闭计算机,取2可以重启计算机,其值再加4表示强制结束“未响应的进程。5、控制由Run运行的程序(简称Run程序)在PB程序设计中,可以用Run()来运行一些程序。比如用户按了F1,就运行一个chm文件。但Run程序无法与PB主程序协调工作,若用户按了多次F1,就会启动Run程序的多个实例,主程序退出时,Run程序依然运行。可以用如下函数来使它们协调工作:FunctionUlongFindWindowA(Ulongclassname,Stringwindowname)Libraryuser32.dllFunctionLongSetParent(Longchildwin,Longparentwin)Libraryuser32.dll使Run程序只运行一个实例handle=FindWindowA(nul,wtitle)/查找Run程序是否已经运行,wtitle为Run程序的标题IFhandle0ThenReturn/若已经在运行就返回Run(C:ProgramFilesJointJoint.chm)/否则运行Run程序PB主程序退出时,Run程序也关闭handle=FindWindowA(nul,wtitle)SetParent(handle,Handle(wmain)/使Run程序窗口成为PB主程序的子窗口6、映射网络驱动器若要在程序中把远程主机的资源映射到本地驱动器,可以用如下函数:FunctionlongWNetAddConnectionA(Stringpath,stringpwd,Stringdrv)Librarympr.dll如下代码可以把远程主机Alexander上的共享文件夹MyDocuments映射到本地的J盘:WNetAddConnectionA(AlexanderMyDocuments,J:)/参数2为访问口令它的作用相当于在DOS提示符下执行:NetUseJ:AlexanderMyDocuments7、显示或隐藏Windows的任务栏要显示或隐藏任务栏,首先要得到它的窗口句柄。任务栏是一个特殊的窗口,它的窗口类为:ShellTrayWnd,没有标题,故只能用FindWindowEx函数来取得它的句柄:FunctionlongFindWindowEx(longph,longch,refStringcn,refStringwn)Libraryuser32FunctionLongShowWindow(LonghWnd,LongnCmdShow)Libraryuser32用ShowWindow来显示或隐藏窗口,其第二个参数为0表示隐藏,为5表示显示:handle=FindWindowEx(0,0,ShellTrayWnd,wn)/wn为空串ShowWindow(handle,0)/隐藏任务栏8、如何将长文件名转换为短文件名通过GetShortPathName函数可以把长文件名转换为8.3格式,其声明为:FunctionLongGetShortPathNameA(Stringlf,refStringsf,Longbuflen)Librarykernel32参数1为长文件名,参数2为保存短文件名的缓冲区,参数3为缓冲区长度。例如:GetShortPathNameA(C:MyDocumentsPowerBuilder编程实践.Doc,sf,256)/sf=Space(256)9、如何在PB中实现延时延时函数很有用,PB虽然没有提供,但可以通过Win32的Sleep函数来扩展:FunctionLongSleep(Longms)Librarykernel32调用:Sleep(1000)/延时1秒10、如何在PB中播放音乐PB没有提供任何多媒体
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 巴西白糖联营协议合同范本
- 买卖合同超预算补充协议
- 特许经营协议ppp项目合同
- 三产融合课件
- 辽宁鞍山市铁东区教育局面向2025年应届毕业生校园招聘40人笔试模拟试题带答案详解
- 难点解析-华东师大版7年级下册期末试题含答案详解
- 难点详解自考专业(学前教育)真题附答案【培优B卷】
- 人力核心指标 行业报告系列 2025年Q3薪智电子设备行业薪酬报告
- 万用表的使用培训课件
- 期货从业资格之《期货基础知识》题库检测试题打印附参考答案详解【巩固】
- 《医用化学基础》教案
- GB/T 9969-2008工业产品使用说明书总则
- GB/T 3618-2006铝及铝合金花纹板
- GB 31645-2018食品安全国家标准胶原蛋白肽
- 防山体滑坡应急预案
- 江苏省社会组织网上办事系统-操作手册
- DB37-T 3079-2017特种设备事故隐患排查治理体系细则
- 2023版江西省乡镇卫生院街道社区卫生服务中心地址医疗机构名单(1744家)
- 模具保养记录表
- 各种隔离标识
- 钢质防火门窗项目商业计划书范文参考
评论
0/150
提交评论