HITSY 版 (精华区)
发信人: Ariel (爱丽儿), 信区: HITSY
标 题: PB API函数应用技巧六则
发信站: 哈工大紫丁香 (2002年03月27日22:13:35 星期三), 站内信件
技巧1: 获得Windows系统目录
---- 关键:GetWindowsDirectoryA 和GetSystemDirectoryA API函数
---- 1.创建含有如下控件的窗体:
控件 控件名 text
标签 st_1 windows目录:
标签 st_2 系统目录:
单行编辑框 sle_1
单行编辑框 sle_2
---- 2.首先声明如下外部函数:
Function uint GetWindowsDirectoryA(ref string
dirtext, 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软件环境下运行通过。
--
--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 218.7.32.250]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.481毫秒