pb+api实际应用 联系客服

发布时间 : 星期日 文章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 \