powerbuilder API 入门

作者&投稿:黎性 (若有异议请与网页底部的电邮联系)
哪位好心人有Powerbuilder的API~

1. 如何使PB窗口总在最上层

通过SetWindowPos函数吧窗口的显示层次修改为HWND_TOPMOST,就可以使指定窗口永远不会被其它窗口覆盖,该函数声明为:

Function Long SetWindowPos(Long hwnd, Long ord, Long x, Long y, Long

dx, Long dy, Long uflag) Library “user32.dll”

参数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函数可以获取驱动器(如:软驱、硬盘、光驱、网络映像驱动

器等)的信息,该函数声明为:

Function Unit GetDriveTypeA(String drive) Library “kernel32.dll”

参数为一个盘符(如“C:”),返回值:1表示未知,2表示软驱,3表示本地硬盘

,4表示网络驱动器,5表示光驱。因此如下代码可以获得光盘的盘符:

For I=Asc(‘D’) to Asc(‘Z’)

//列举所有可能的CDROM的驱动器

If GetDriveTypeA(Char(i)+”:”) = 5 Then

//若找到CDROM

Messagebox(“CDROM”,Char(i)+”:”)

//显示光盘盘符

Exit //退出循环

End if

Next

3. 在PB中如何获取目录信息

(1) 获取当前目录。通过GetCurrentDirectory函数可以获取当前目录,该函数

声明为:

Function Ulong GetCurrentDirectory(Ulong buflen,ref String dir)

Library “kernel32.dll”

参数2为接受当前目录的字符缓冲区,前面必须加ref表示地址引用;参数1用来指

定字符缓冲区的长度。调用过程为:

String curdir

Curdir=Space(256)

//为字符缓冲区开辟内存空间

GetCurrentDirectory(256,curdir)

MessageBox(“当前路径”,curdir)

(2) 获取Windows及系统目录。要用到GetWindowsDirectory和GetSystemDirec

tory两个函数,须作如下声明:

Function Uint GetWindowsDirectoryA(ref String dir,Uint buflen)

Library kernel32.dll”

Function Uint GetSystemDirectoryA(ref String dir,Uint buflen)

Library "kernel32.dll”

4. 在PB中如何注销当前用户、关闭计算机、重启计算机

通过ExitWindowsEx函数可实现这三个功能,首先作如下声明:

Function Long ExitWindowsEx(Long uflag, Long nouse) Library "user32.dll”

参数2保留不用,可取0;参数1取0可以注销当前用户,取1可以关闭计算机,取2

可以重启计算机,其值再加4表示强制结束“未响应”的进程。

5. 控制由Run运行的程序(简称Run程序)

在PB程序设计中,可以用Run()来运行一些程序。但Run程序无法与PB主程序协调

工作,若用户多次调用,就会启动Run程序的多个实例,主程序退出时,Run程序

依然运行。可以用如下函数使它们协调工作:

Function Ulong FindWindowA(Ulong classname, String windowname)

Library "user32.dll”

Function Long SetParent(Long childwin, Long parentwin) Library "user32.dll”

(1) 使Run程序只运行一个实例

handle = FindWindowsA(nul,wtitle)

//查找Run程序是否已经运行,wtitle为Run程序的窗口标题

If handle > 0 Then Return

//若已经在运行就返回

Run(“c:\luhan.chm”)

//否则运行Run程序

(2) PB主程序退出时,Run程序也关闭

Handle = FindWindowA(nul,wtitle)

SetParent(handle,Handle(w_main))

//使Run程序窗口成为PB主程序的子窗口

6. 映像网络驱动器

若要在程序中把远程主机的资源映像到本地驱动器,可以用如下函数:

Function Long WNetAddConnectionA(String path, String pwd, String drv)

Library “mpr.dll”

如下代码可以把远程主机Alexander上的共享文件夹My Documents映像到本地的J

盘:

WnetAddConnectionA(“\\ Alexander\ My Documents”,””,”J:”) //参数2

为访问口令

它的作用相当于在DOS提示符下执行:Net Use J: \\ Alexander\ My Documents

7. 显示或隐藏Windows的任务栏

要显示或隐藏任务栏,首先要得到它的窗口句柄。任务栏是一个特殊的窗口,它

的窗口类为:Shell_TrayWnd,没有标题,故只能用FindWindowEx函数来取得它的

句柄:

Function Long FindWindowEx(Long ph, Long ch, ref String cn, ref

String wn) Library “user32.dll”

Function Long ShowWindow(Long hWnd, Long nCmdShow) Library “user32.dll”

用ShowWindow来显示或隐藏窗口,其第二个参数为0表示隐藏,为5表示显示:

handle = FindWindowEx(0,0,” Shell_TrayWnd”,wn) //wn为空串

ShowWindow(handle,0) //隐藏任务栏

8. 如何将长文件名转换为短文件名

通过GetShortPathName函数可以把上文件名转换为8.3格式,其声明为:

Function Long GetShortPathNameA(String lf, ref String sf, Long

buflen)

Library “kernel32.dll”

参数1为长文件名,参数2为保存短文件名的缓冲区,参数3为缓冲区长度。例如:

GetShortPathNameA(“C:\My Document\Powerbuilder编程实践.Doc”,sf,256)

\

//sf = Spcace(256)

9. 如何在PB中实现延时

延时函数很有用,PB虽然没有提供,但可以通过Wind32的Sleep函数来扩展:

Function Long Sleep(Long ms) Library “kernel32.dll”

调用:Sleep(1000) //延时1秒

10. 如何在PB中播放音乐

PB没有提供任何多媒体函数,要播放音乐只能通过Win32 API的PlaySound来实现



Function Long PlaySound(String Filename, Int Mod, Int Flags) Library

“ winmm.dll”

亲,应该是用皮肤控件。

但是在使用上来说,皮肤控件不是很好用,经常会出现一些小状况,比如色差问题,字体格式显示问题等。。

1. 如何使PB窗口总在最上层

通过SetWindowPos函数吧窗口的显示层次修改为HWND_TOPMOST,就可以使指定窗口永远不会被其它窗口覆盖,该函数声明为:

Function Long SetWindowPos(Long hwnd, Long ord, Long x, Long y, Long

dx, Long dy, Long uflag) Library “user32.dll”

参数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函数可以获取驱动器(如:软驱、硬盘、光驱、网络映像驱动

器等)的信息,该函数声明为:

Function Unit GetDriveTypeA(String drive) Library “kernel32.dll”

参数为一个盘符(如“C:”),返回值:1表示未知,2表示软驱,3表示本地硬盘

,4表示网络驱动器,5表示光驱。因此如下代码可以获得光盘的盘符:

For I=Asc(‘D’) to Asc(‘Z’)

//列举所有可能的CDROM的驱动器

If GetDriveTypeA(Char(i)+”:”) = 5 Then

//若找到CDROM

Messagebox(“CDROM”,Char(i)+”:”)

//显示光盘盘符

Exit //退出循环

End if

Next

3. 在PB中如何获取目录信息

(1) 获取当前目录。通过GetCurrentDirectory函数可以获取当前目录,该函数

声明为:

Function Ulong GetCurrentDirectory(Ulong buflen,ref String dir)

Library “kernel32.dll”

参数2为接受当前目录的字符缓冲区,前面必须加ref表示地址引用;参数1用来指

定字符缓冲区的长度。调用过程为:

String curdir

Curdir=Space(256)

//为字符缓冲区开辟内存空间

GetCurrentDirectory(256,curdir)

MessageBox(“当前路径”,curdir)

(2) 获取Windows及系统目录。要用到GetWindowsDirectory和GetSystemDirec

tory两个函数,须作如下声明:

Function Uint GetWindowsDirectoryA(ref String dir,Uint buflen)

Library kernel32.dll”

Function Uint GetSystemDirectoryA(ref String dir,Uint buflen)

Library "kernel32.dll”

4. 在PB中如何注销当前用户、关闭计算机、重启计算机

通过ExitWindowsEx函数可实现这三个功能,首先作如下声明:

Function Long ExitWindowsEx(Long uflag, Long nouse) Library "user32.dll”

参数2保留不用,可取0;参数1取0可以注销当前用户,取1可以关闭计算机,取2

可以重启计算机,其值再加4表示强制结束“未响应”的进程。

5. 控制由Run运行的程序(简称Run程序)

在PB程序设计中,可以用Run()来运行一些程序。但Run程序无法与PB主程序协调

工作,若用户多次调用,就会启动Run程序的多个实例,主程序退出时,Run程序

依然运行。可以用如下函数使它们协调工作:

Function Ulong FindWindowA(Ulong classname, String windowname)

Library "user32.dll”

Function Long SetParent(Long childwin, Long parentwin) Library "user32.dll”

(1) 使Run程序只运行一个实例

handle = FindWindowsA(nul,wtitle)

//查找Run程序是否已经运行,wtitle为Run程序的窗口标题

If handle > 0 Then Return

//若已经在运行就返回

Run(“c:\luhan.chm”)

//否则运行Run程序

(2) PB主程序退出时,Run程序也关闭

Handle = FindWindowA(nul,wtitle)

SetParent(handle,Handle(w_main))

//使Run程序窗口成为PB主程序的子窗口

6. 映像网络驱动器

若要在程序中把远程主机的资源映像到本地驱动器,可以用如下函数:

Function Long WNetAddConnectionA(String path, String pwd, String drv)

Library “mpr.dll”

如下代码可以把远程主机Alexander上的共享文件夹My Documents映像到本地的J

盘:

WnetAddConnectionA(“\\ Alexander\ My Documents”,””,”J:”) //参数2

为访问口令

它的作用相当于在DOS提示符下执行:Net Use J: \\ Alexander\ My Documents

7. 显示或隐藏Windows的任务栏

要显示或隐藏任务栏,首先要得到它的窗口句柄。任务栏是一个特殊的窗口,它

的窗口类为:Shell_TrayWnd,没有标题,故只能用FindWindowEx函数来取得它的

句柄:

Function Long FindWindowEx(Long ph, Long ch, ref String cn, ref

String wn) Library “user32.dll”

Function Long ShowWindow(Long hWnd, Long nCmdShow) Library “user32.dll”

用ShowWindow来显示或隐藏窗口,其第二个参数为0表示隐藏,为5表示显示:

handle = FindWindowEx(0,0,” Shell_TrayWnd”,wn) //wn为空串

ShowWindow(handle,0) //隐藏任务栏

8. 如何将长文件名转换为短文件名

通过GetShortPathName函数可以把上文件名转换为8.3格式,其声明为:

Function Long GetShortPathNameA(String lf, ref String sf, Long

buflen)

Library “kernel32.dll”

参数1为长文件名,参数2为保存短文件名的缓冲区,参数3为缓冲区长度。例如:

GetShortPathNameA(“C:\My Document\Powerbuilder编程实践.Doc”,sf,256)

\

//sf = Spcace(256)

9. 如何在PB中实现延时

延时函数很有用,PB虽然没有提供,但可以通过Wind32的Sleep函数来扩展:

Function Long Sleep(Long ms) Library “kernel32.dll”

调用:Sleep(1000) //延时1秒

10. 如何在PB中播放音乐

PB没有提供任何多媒体函数,要播放音乐只能通过Win32 API的PlaySound来实现



Function Long PlaySound(String Filename, Int Mod, Int Flags) Library

“ winmm.dll”


动词过去式和过去分词大全
overbear overbore overborne overbid overbid overbidden, overbid overblow overblew overblown overbuild overbuilt overbuilt overbuy overbought overbought overcast overcast overcast overcome overcame overcome overdo overdid overdone overdraw overdrew overdrawn overdrive overdrove overdriven overea...

求小学英语动词词组
overbuild overbuilt overbuilt overbuy overbought overbought overcast overcast overcast overcome overcame overcome overdo overdid overdone overdraw overdrew overdrawn overdrive overdrove overdriven overeat overate overeaten overfeed overfed overfed overfly overflew overflown overgrow overgrew overgrown ...

英语动词不规则变化表 大全
overbuild overbuilt overbuilt overbuy overbought overbought overcast overcast overcast overcome overcame overcome overdo overdid overdone overdraw overdrew overdrawn overdrive overdrove overdriven overeat overate overeaten overfeed overfed overfed overfly overflew overflown overgrow overgrew overgrown ...

kid,sound的过去式是什么?……
overbear overbore overborne overbid overbid overbidden, overbid overblow overblew overblown overbuild overbuilt overbuilt overbuy overbought overbought overcast overcast overcast overcome overcame overcome overdo overdid overdone overdraw overdrew overdrawn overdrive overdrove overdriven overea...

外语:过去时
overbore overborne overbid 漫天要价 overbid overbidden, overbid overblow 吹过 overblew overblown overbuild 建造过多 overbuilt overbuilt overbuy 买得过贵 overbought overbought overcast 遮蔽 overcast overcast overcome 克服 overcame overcome overdo 做得过分 overdid overdone overdraw 透支 overdrew ...

谁有A~Z开头的规则动词
overbuild overbuilt overbuilt overbuy overbought overbought overcast overcast overcast overcome overcame overcome overdo overdid overdone overdraw overdrew overdrawn overdrive overdrove overdriven overeat overate overeaten overfeed overfed overfed overfly overflew overflown overgrow overgrew overgrown ...

初中英语过去式及过去分词
overbuild overbuilt overbuilt overbuy overbought overbought overcast overcast overcast overcome overcame overcome overdo overdid overdone overdraw overdrew overdrawn overdrive overdrove overdriven overeat overate overeaten overfeed overfed overfed overfly overflew overflown overgrow overgrew overgrown ...

right过去式是什么
overbear overbore overborne overbid overbid overbidden, overbid overblow overblew overblown overbuild overbuilt overbuilt overbuy overbought overbought overcast overcast overcast overcome overcame overcome overdo overdid overdone overdraw overdrew overdrawn overdrive overdrove overdriven overea...

特殊的过去分词有哪些?
overbear 压抑 overbore overborne overbid 漫天要价 overbid overbidden, overbid overblow 吹过 overblew overblown overbuild 建造过多 overbuilt overbuilt overbuy 买得过贵 overbought overbought overcast 遮蔽 overcast overcast overcome 克服 overcame overcome overdo 做得过分 overdid overdone overdraw 透支 ...

英语小作文(小学50个单词左右,简单型的)题目:我的妈妈
overbid overbid overbidden, overbid overblow overblew overblown overbuild overbuilt overbuilt overbuy overbought overbought overcast overcast overcast overcome overcame overcome overdo overdid overdone overdraw overdrew overdrawn overdrive overdrove overdriven overeat overate overeaten overfeed overfed over...

洪洞县14755728623: 调用哪些API函数可控制powerbuilder中的mediaplayer的声道?
卜爬根痛: 能,测试代码如下 unit func; interface uses mmsystem,mplayer,Windows,Classes,Sysutils,Graphics,Jpeg,Registry, winsock; const MCI_SETAUDIO= $873; MCI_DGV_SETAUDIO_SOURCE_LEFT=1; MCI_DGV_SETAUDIO_SOURCE_STEREO=...

洪洞县14755728623: powerbuilder application execution error (R0037) -
卜爬根痛: 这个就是程序的bug,出现空(null)对象了. 这个程序是用powerbuilder做的. 看是一直出这个问题,还是偶尔出问题. 如果是偶尔的话,那么出现问题的时候,就退出程序重新执行. 如果是一直出的话,估计是出现特殊的数据导致的

洪洞县14755728623: 安装防火墙或者杀毒软件后程序出现:PowerBuilder Application Execution Error (R0015) -
卜爬根痛: 在n-pyinter对象的of -getpapersize函数的28行调用的外部函数不存在.这是一个PB运行时错误,你看看那个函数的28行是不是调用了外部函数,而外部函数声明时用的dll是否还存在,估计不是dll没了,就是dll里没有这个函数.建议可以试试用360安全卫士的系统恢复试试,希望能帮到你

洪洞县14755728623: 一运行软件就报错 powerbuilder application execution error(r0039) 怎么解决 -
卜爬根痛: 是自己开发的软件吗,是的话,检查 窗口w_smartpas open事件第14行的代码,检查控件的portopen属性,如果你只是使用软件的话,就只有类型软件提供商了

洪洞县14755728623: 请问PowerBuilder Delphy Java分别是什么语言,各自有何特点,哪个自学简单些,哪个最实用! -
卜爬根痛: 首先我要告诉你,在你选择你要学的语言的时候一定要明确你要用这种语言干什么,你的目标是什么?powerbuilder和delphi应用的主要领域是在数据库上,如果你要做数据库上的相关领域的问题选择这两种语言更容易上手,在这两种语言中,...

洪洞县14755728623: IDE编程环境是什么?IDE是什么? -
卜爬根痛: 1、IDE编程环境就是说 把代码的编写,程序的调试,编译,运行 以及其他的相关操作都集成在一起的 编程工具. 像studio,jcreator, netbeans 等大型的程序编写工具都算是 ide. IDE(Integrated Development,集成开发环境) 2、集成开发环境(简称...

洪洞县14755728623: PowerBuilder和Delphi哪个就业前景广阔?
卜爬根痛: 1Delphi 比较好点.并且Delphi的API和windows平台无关,各类资本丰富,代码的寿命长,特别是在支撑面向对象的情况下能保持语法简单易学,实袈溱是难能宝贵,这一点上JAVA就不如Delphi好.高等API在很齐备的情况下,调用十分简单,...

洪洞县14755728623: 什么是PowerBuilde?什么是PowerBuilder
卜爬根痛: PowerBuilder 美国Sybase公司研制的一种新型、快速开发工具,是客户机/服务器结构下,基于Windows3.x、Windows95和WindowsNT的一个集成化开发工具.它包含...

洪洞县14755728623: 使用PowerBuilder有何作用?
卜爬根痛: 使用PowerBuilder,你可以用一种可视的直观的方式来创建应用程序的用户界面和数据库接口

洪洞县14755728623: 如何用powerbuilder编译软件
卜爬根痛: 程序编写好之后,关闭所有的窗口,数据窗口,函数等等. 然后点新建,选择project页,然后选第一个,application wizard,按照向导,一步一步的进行,最后生成以下,即可在目录下看到pbd(dll)和exe文件了.这些文件就是生成的可执行程序.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网