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毫秒