pb+api实际应用(4)

2019-03-10 20:17

17、调用API函数设计ABOUT窗口

Windows操作系统的许多软件中都包含一个windows 风格的about 窗口,它向用户反映了当前系统的一些基本信息,其中显示有关windows 及其应用软件的版本、版权和系统的工作状态等信息。以下通过调用API 函数设计应用系统的ABOUT 窗口。 外部函数引用声明:

Function long GetWindowWord (long hwnd, long nIndex ) Library \Function long ShellAbout (long hwnd, string szApp , string szOtherStuff, long hIcon) Library \

Function long ExtractIcon (long hinst, string lpszExeFileName, long nIconIndex ) Library \Function long GetDiskFreeSpace (string lpRootPathName, long lpSectorsPerCluster, long lpBytesPerSector , long

lpNumberOfFreeClusters , long lpTotalNumberOfClusters) Library \

function long GetDriveType(string nDrive) Library \for \

Subroutine GetSystemInfo ( SYSTEM_INFO lpSystemInfo) Libaray \

Function long GetSystemMetrics(long nIndex ) Library \定义实例变量:

Constant long GWL_EXSTYLE = -20 Constant long GWL_STYLE = -16 Constant long GWL_WNDPROC = -4 Constant long GWL_HINSTANCE = -6 Constant long SM_CXSCREEN = 0 Constant long SM_CYSCREEN = 1 定义结构system_info

Type SYSTEM_INFO from structure long dwOemID long dwPageSize

long lpMinimumApplicationAddress long lpMaximumApplicationAddress long dwActiveProcessorMask long dwNumberOrfProcessors long dwProcessorType

long dwAllocationGranularity long dwReserved

End Type 实现代码:

w_example.cb_1.clicked:

long hinst ,icons,abouts,cls1, cls2,secs ,bytes,x string dispx,dispy ,cps ,space1 ,space2,buffs

system_info sysinfo hinst = GetWindowWord(handle(parent), GWL_HINSTANCE)//获得指定窗口结构的信息

icons = ExtractIcon(hinst, \获取指定的可执行程序的图标 buff = \

GetDriveType(buffs)//获取盘的类型

GetDiskFreeSpace(buffs, secs, bytes, cls1, cls2)//获取指定分区的容量,注:这个api函数不能获取大硬盘分区的信息 cls1 = cls1 * secs * bytes cls2 = cls2 * secs * bytes

space1 = \驱动器总共容量:\千字节\space2 = \驱动器可用容量:\千字节\x=GetSystemMetrics(SM_CXSCREEN)//获取显示器的水平方向分辨率 dispx = \显示器分辨率:\

x = GetSystemMetrics(SM_CYSCREEN)//获取显示器的垂直方向分辨率 dispy = String(x)

GetSystemInfo(sysinfo)//获取系统信息(如cpu,电源) choose Case sysinfo.dwProcessorType Case 386

cpus = \处理器类型:386\ Case 486

cpus = \处理器类型:486\ Case 586

cpus = \处理器类型:586\ end choose

abouts = ShellAbout(handle(parent), \演示程序\销售管理系统V2.0版权所有[C]2004-2005天天软件\

Char(13) + Char(10) + space1 + Char(13) + Char(10)+& space2+ char(13) + Char(10) + cpus + \\显示标准的about对话框

18、获得IE的版本号 定义结构:

Type DllVersionInfo from structure

long cbSize

long dwMajorVersion long dwMinorVersion long dwBuildNumber long dwPlatformID End Type

外部函数引用声明:

Funcation long DllGetVersion Lib( DllVersioninfo dwVersion) library \

窗口w_example的窗口级函数: string Wf_VersionString() string ls_return DllVersionInfo DVI

DVI.cbSize = 160//对DllVersioninfo的相关成员进行初始化 DllGetVersion(DVI) //调用api函数有关IE的信息

ls_return = \+DVI.dwMinorVersion+ \

return ls_return

19.指定ip能否ping通

定义两个结构: str_ip_option: ttl char tos char flags char size char data long str_icmp_ech

address ulong status ulong roundtriphome ulong datasize uint reserved uint datapointer ulong

options str_ip_option data[250] char 声明外部函数:

function long inet_addr(ref string addr) library \function long IcmpCloseHandle(long IcmpHandle) library \function long IcmpSendEcho (long IcmpHandle,long

DestinationAddress,string requestData,integer requestSize,long requestOption,ref str_icmp_echo replyBuffer,long replySize,long timeout ) library \

function long IcmpCreateFile() library \函数,返回true表示能ping通:

boolean f_ping(string ps_ipaddr): ulong lul_NetAddress long ll_hFile,ll_ret

string ls_Message=Space(20) str_icmp_echo preturn

lul_NetAddress=inet_addr(as_IPAddr) IF lul_NetAddress=-1 THEN RETURN FALSE ll_hFile=IcmpCreateFile()

IF ll_hFile = 0 THEN RETURN FALSE

ll_ret=IcmpSendEcho(ll_hFile,lul_NetAddress,ls_Message,Len(ls_Message),0,preturn,282,500)

IcmpCloseHandle(ll_hfile) RETURN ll_ret > 0

20.使程序不出现在Windows任务列表中( Win98 ) 定义常量:

constant long RSP_SIMPLE_SERVICE = 1

constant long RSP_UNREGISTER_SERVICE = 0 声明外部函数: //获取当前进程id

function long GetCurrentProcessId() library 'kernel32' //注册服务进程

function long RegisterServiceProcess(long processid, long type) library 'kernel32'

application的open事件: long ll_procid

ll_procid = GetCurrentProcessId()

RegisterServiceProcess(ll_procid, RSP_SIMPLE_SERVICE) application的close事件: long ll_procid

ll_procid = GetCurrentProcessId()

RegisterServiceProcess(ll_procid, RSP_UNREGISTER_SERVICE)

21、获取光驱的盘符 外部函数声明:


pb+api实际应用(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2011届高考政治复习阶段重点掌握的考点

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: