发布时间 : 星期日 文章pb+api实际应用更新完毕开始阅读
(转)pb+api实际应用(一)
2010-09-13 23:45:22| 分类: PB学习资料 | 标签:pb api 实例 |字号 订阅
1、利用Api函数计算Windows从启动后所运行的总时间
Function long GetTickCount() Library \获取windows从启动开始的总微秒数
窗口w_example的open事件: timer(0.05)//触发timer事件 窗口的timer事件:
long hour , minute ,second
hour = GetTickCount() \\ 1000 \\ 60 \\ 60//获取小时数 st_1.text = String(hour) + \小时\
minute = (GetTickCount() - hour * 60 * 60 * 1000) \\ 1000 \\ 60//获取分钟数
st_2.text = Str(minute) + \分钟\
second = (GetTickCount() - long(st_1.text) * 60 * 60 * 1000 - long(st_2.text) * 60 * 1000) \\ 1000//获取总秒数 st_3.text = String(second) + \秒钟\
2、GetSystemMetrics函数
Function long GetSystemMetrics (long nIndex ) Lib “user32.dll” 其中nIndex的不同取值可以使该函数实现不同的功能。例如返回Win桌面中各种显示单元的宽度和高度、是否安装鼠标、是否调换了鼠标左右键的定义等。 当nIndex = 67(SM_CLEANBOOT)时,该函数的返回值表示Windows9x的当前运行模式。
在以下的示例中我们可以看到GetSystemMetrics函数的用法和作用。 首先在窗口w_example中定义实例变量:
Public Constant long SM_CLEANBOOT = 67 定义外部函数引用声明: Function long GetSystemMetrics (long nIndex ) Lib “user32.dll” 在窗口w_example中添加static text控件st_1和commandbutton控件 Cb_1,设置如下代码: cb_1.clicked:
choose case GetSystemMetrics(SM_CLEANBOOT) Case 0
st_1.text=“系统运行于正常模式” Case 1
st_1.text=“系统运行于安全模式” Case 2
st_1.text=“系统运行于网络环境下的安全模式”
end choose
3、获取磁盘分区大小(支持大的分区) type large_integer from structure unsignedlong lowpart unsignedlong highpart
end type//定义能够保存64位整形的结构 定义外部函数引用声明
Function long GetDiskFreeSpaceExA(ref string lpRootPathName, ref large_integer lpFreeBytesAvailableToCaller,ref large_integer
lpTotalNumberOfBytes, ref large_integer lpTotalNumberOfFreeBytes) Library \api函数解析:
lpRootPathName String ,不包括卷名的磁盘根路径名
lpFreeBytesAvailableToCaller LARGE_INTEGER,指定一个变量,用于容纳调用者可用的字节数量
lpTotalNumberOfBytes LARGE_INTEGER ,指定一个变量,用于容纳磁盘上的总字节数
lpTotalNumberOfFreeBytes LARGE_INTEGER,指定一个变量,用于容纳磁盘上可用的字节数 实现代码解析:
public function double of_get_drive_totalspace (string as_drive);/*函数作用:获取指定的驱动器的空间大小 参数:as_drive string 驱动器名 返回值:real */
Double ld_capacity any ia_pass
if right(as_drive,1)<>\as_drive=as_drive+\
end if//判断传递的驱动器参数的最后一个字符是否为\
LARGE_INTEGER lngFreeCaller,lngTotal,lngTotalFree//定义结构的三个变量 GetDiskFreeSpaceExA(as_drive, lngFreeCaller, lngTotal, lngTotalFree)//调用api函数获取对应的分区信息 IF lngTotal.Highpart > 0 THEN
ld_capacity = ( lngTotal.Highpart * 1.0 * 4294967295 ) +lngTotal.LowPart ELSE
ld_capacity = lngTotal.LowPart
END IF//进行对应的结构变量转化为double类型并返回 return ld_capacity
4、用API函数控制光驱的开关
使用API函数CDdoor 来控制光驱门的开和关程序十分简单,由于 CDdoor 函数自身包含了对异常错误的处理机制,因此这个程序的通用性很高,你可以把这段代码移植到你的程序中,实现某些多媒体播放器所常用的开关光驱的功能。 以下是源代码:
// ------------------------------------------- // 利用API函数控制光驱的开和关
// ------------------------------------------- // 程序说明:
// 本例使用API函数 CDdoor 来控制光驱门的开和关 // 程序十分简单,由于 CDdoor 函数自身包含了对异常 // 错误的处理机制,因此这个程序的通用性很高,你可 // 以把这段代码移植到你的程序中,实现某些多媒体播 // 放器所常用的开关光驱的功能。
// -------------------------------------------
说明:CDdoor函数是安装WINDOWS时所自带的winmm.dll文件中包含的函数
定义外部函数引用声明:
Declare Function long CDdoor( string lpstrCommand , string
lpstrReturnString, long uReturnLength , long hwndCallback ) Libraray \ 定义实例变量:
boolean CDOpen // CDOpen用来标示光驱开与关的状态 w_example的cb_1的clicked事件: //如果关闭则打开,并且按钮做相应变化 If CDOpen = False Then
CDdoor(\ CDOpen = True
Cb_1.text = \点击关闭光驱\Else
//否则关闭
CDdoor(\ CDOpen = False
Cb_1.text = \点击打开光驱\End If
w_example的open事件:
CDOpen = False
CDdoor(\相关api函数解析:
CDdoor函数是安装WINDOWS时所自带的winmm.dll文件中包含的函数,我们只须先加入如下的声明后就能引用这个API函数:
Function long CDdoor( string lpstrCommand , //String,这是控制命令参数
string lpstrReturnString , // String,这是返回值 long uReturnLength, //Long,返回值长度参数
long hwndCallback ) Librara y \for \
引用的语法是CDdoor(\用以关闭光驱门
CDdoor(\用以打开光驱门
程序解析:
程序中使用了一个布尔型变量来标示当前光驱门开与关的状态。
如果配合检测光驱是否存在的函数一起使用,此程序的通用性会更高。而关于检测驱动器信息的函数请参看 GetDriveType,GetLogicalDrives这两个api函数的用法。
5、使用文件的默认的打开方式
许多应用程序都需要通过默认的打开方式来打开一些文档。在某些情况下,你的应用程序可能需要显示像HTML或者RTF这样的文件。但是我们如何知道哪个应 用程序与这些文件建立了关联关系呢?幸好,Windows API提供给我们使文档显示在其默认的程序里的方法。
我们可以通过Windows shell.方法使用ShellExecute API函数来加载文档。这个函数将自动的来判断文件的默认打开方式,并用默认的打开方式来开启文档。 以下就是ShellExecute函数的声明:
Function long ShellExecuteA (long hWnd As Long, string lpOperation , string lpFile , string lpParameters, string lpDirectory , long nShowCmd ) Library \