位置于:书籍教程首页>>数据库类>>Power Builder>>正文

PB API函数应用技巧六则

资料:http://xp163.com/

技巧1: 获得Windows系统目录


     关键:GetWindowsDirectoryA 和GetSystemDirectoryA API函数

     1.创建含有如下控件的窗体:

控件 控件名 text
标签 st_1 windows目录:
标签 st_2 系统目录:
单行编辑框 sle_1
单行编辑框 sle_2

---- 2.首先声明如下外部函数:
Function uint GetWindowsDirectoryA(ref stringdirtext, uint textlen) library "KERNEL32.DLL"
Function uint GetSystemDirectoryA(ref string dirtext, uint textlen) library "KERNEL32.DLL"

---- 3.在窗体的open事件中输入如下语句:
String ls_WinPath,ls_syspath,ls_curpath
ls_WinPath = Space( 40 )
ls_syspath = Space( 40 )
GetWindowsDirectoryA( ls_WinPath, 60 )
GetSystemDirectoryA(ls_syspath,60)
sle_1.text=ls_winpath
sle_2.text=ls_syspath



技巧2:获取驱动器类型.

     关键:GetDriveTypeA API函数

     1.创建含有如下控件的窗体:

控件 控件名 text
标签 st_1 输入盘符:
标签 st_2 获取驱动器类型:
单行编辑框 sle_1
单行编辑框 sle_2

     2.首先声明如下外部函数:
Function long GetDriveTypeA(string nDrive)Library "kernel32"

---- 3.在单行编辑框Sle2的modified事件中输入如下语句:
long ll_drive
string drvinfo
ll_drive=GetDriveTypeA(sle_1.text)
CHOOSE CASE ll_drive
CASE 2
drvinfo='可移动驱动器'
CASE 3
drvinfo='固定驱动器'
CASE 4
drvinfo='网络驱动器'
CASE 5
drvinfo='CD-ROM驱动器'
CASE ELSE
drvinfo='不是驱动器'
END CHOOSE
sle_2.text=drvinfo


技巧3:获取键盘类型.

---- 关键:GetKeyboardType API函数

---- 1.创建含有如下控件的窗体:

控件 控件名 text
标签 st_1 键盘类型:
单行编辑框 sle_1

---- 2.首先声明如下外部函数:
Function long GetKeyboardType(long nTypeFlag) Library "user32"

---- 3.在窗体的open事件中输入如下语句:
long ll_keyboardtype
string kbinfo
ll_keyboardtype=GetKeyboardType(0)
CHOOSE CASE ll_keyboardtype
CASE 1
kbinfo='IBM PC/XT OR COMPATIBLE(83KEY)'
CASE 2
kbinfo='OLIVETTI (102KEY)'
CASE 3
kbinfo='IBM AT OR SIMILAR(84KEY)'
CASE 4
kbinfo='IBM ENHANCE(101 OR 102KEYS)'
CASE 5
kbinfo='NOKIA 1050 OR SIMILAR'
CASE 6
kbinfo='NOKIA 9140'
CASE 7
kbinfo='JAPAN KEYBOARD'
END CHOOSE
SLE_1.TEXT=KBINFO



技巧4:获取硬盘容量.


---- 关键: GetDiskFreeSpaceA API函数

---- 1.创建含有如下控件的窗体:

控件 控件名 text
标签 st_1 C盘可用容量:
标签 st_2 C盘容量:
单行编辑框 sle_1
单行编辑框 sle_2

---- 2.首先声明如下外部函数:
Function uint GetDiskFreeSpaceA(string lpRootPathName,ref long lpSectorsPerCluster,ref long lpBytesPerSector,ref long                  lpNumberOfFreeClusters,ref long lpTotalNumberOfClusters) Library "kernel32"

---- 3.在窗体的open事件中输入如下语句:
long secs,bytes,cls1,cls2,cls3,cls4
GetDiskFreeSpaceA("c:\",secs,bytes,cls1,cls2)
cls3=cls1*secs*bytes
cls4=cls2*secs*bytes
sle_1.text=string(cls3)+'字节'
sle_2.text=string(cls4)+'字节'


技巧5:显示和隐藏windows98任务栏.

---- 关键:FindWindowExA和ShowWindow API函数

---- 1. 创建含有如下控件的窗体:

控件 控件名 text
命令按钮 Cb_1 隐藏WINDOWS98任务条
命令按钮 Cb_2 显示WINDOWS98任务条

---- 2.首先声明如下外部函数:
Function long FindWindowExA ( long hWnd,long hWndChild, ref string lpszClassName,ref string lpszWindow) library 'user32'
Function long ShowWindow (long hWnd, long nCmdShow ) library 'user32'

---- 3.在命令按钮cb_1的Clicked事件中输入如下语句:
Constant Long SW_SHOW = 5
String ShellTaskBarWnds = "Shell_TrayWnd"
String Nulls
Long TaskBars
TaskBars=FindWindowExA(0,0,ShellTaskBarWnds,Nulls)
ShowWindow(TaskBars,SW_SHOW )

---- 4. 在命令按钮cb_2的Clicked事件中输入如下语句:
Constant Long SW_HIDE = 0
String ShellTaskBarWnds = "Shell_TrayWnd"
String Nulls
Long TaskBars
TaskBars=FindWindowExA(0,0,ShellTaskBarWnds,Nulls)
ShowWindow(TaskBars,SW_HIDE )


技巧6:闪动标题栏.

---- 关键:FlashWindow 和FindWindowA API函数

---- 1.创建含有如下控件的窗体:(插入ACTIVEX的ctClock控件.)

控件 控件名 text
ctClock ole_1

---- 2.首先声明如下外部函数:
FUNCTION long FlashWindow(ulong hwnd,long bInvert) Library "user32"
FUNCTION long FindWindowA( ulong Winhandle,string wintitle ) Library "user32"

---- 3.在ole_1控件的Timechanged事件中输入如下语句:
long ll_hwnd
ll_hwnd = FindWindowA(0,"闪动的时钟")
FlashWindow(ll_hwnd,1)

---- 以上程序在WINDOWS98中文版,POWERBUILDER6.0软件环境下运行通过。


 PB API函数应用技巧六则相关说明
 PB API函数应用技巧六则相关说明

 

 书籍教程站内推荐信息
 书籍教程网站地图