发布时间 : 星期一 文章pb+api实际应用更新完毕开始阅读
Function uint GetDriveTypeA(string lpRootPathName) LIBRARY \自定义用户函数
public function string of_get_drive_type (string as_rootpathname);/*函数作用:获取指定的驱动器的类型 参数:as_drive string 驱动器名 返回值:string */ string ls_DriveType
as_RootPathName=Left(as_RootPathName,1)+\CHOOSE CASE GetDriveTypeA(as_RootPathName) CASE 2
ls_DriveType=\可移动磁盘 CASE 3
ls_DriveType=\软驱 CASE 4
ls_DriveType=\网络驱动盘符 CASE 5
ls_DriveType=\光驱 CASE 6
ls_DriveType=\随机存储设备 CASE ELSE
SetNull(ls_DriveType) END CHOOSE
RETURN ls_DriveType end function
public function string of_get_drive_cdrom ();/*函数作用:获取光驱的驱动器名
返回值:string */
integer li_i,li_start,li_end string ls_CDRoms=\li_start=Asc(\li_end=Asc(\
FOR li_i=li_start TO li_end
IF of_get_drive_Type(Char(li_i))=\ls_CDRoms=ls_CDRoms+Char(li_i)
//调用自定义函数of_get_drive_type()并判断函数返回值,如是CDROM则退出循环 NEXT
RETURN ls_CDRoms end function
22、实现系统托盘
WINDOWS状态栏也称系统托盘,在WINDOWS9X中已有系统时钟、音量控制、输入法等程序在WINDOWS 的状态栏中设有图标,一些应用程序在安装完后也将它们本身的图标放入了状态栏中,如超级解霸、WINAMP等。通过在应用程序中有效地控制状态栏中的图 标,不仅可以使应用程序具有专业水准,也方便了用户的操作。VB做为一种使用很广的高级语言,实现将图标放入状态栏的功能并不困难,只要有效地利用一个 API函数 Shell_NotifyIcon和NOTIFYICONDATA数据结构就能达到这一目的,有关这两者的定义和使用在程序中有详细的注释,在此就不再详 述了。
下面的这个程序运行后,将窗口图标加入到了WINDOWS状态栏中,用鼠标右击该图标会弹出一个菜单,可实现修改该图标、窗口复位、最小化、最大化及关闭程序等功能。 实现步骤: 结构定义
Type NOTIFYICONDATA from structure
long cbSize //注释:该数据结构的大小
long hwnd //注释:处理任务栏中图标的窗口句柄 long uID//注释:定义的任务栏中图标的标识
long uFlags //注释:任务栏图标功能控制,可以是以下值的组合(一般全包括)
//注释:NIF_MESSAGE 表示发送控制消息; //注释:NIF_ICON表示显示控制栏中的图标;
//注释:NIF_TIP表示任务栏中的图标有动态提示。
long uCallbackMessage//注释:任务栏图标通过它与用户程序交换消息,处理该消息的窗口由hWnd决定
long hIcon //注释:任务栏中的图标的控制句柄 string szTip//注释:图标的提示信息 End Type
外部函数引用声明:
Function long Shell_NotifyIcon (long dwMessage,NOTIFYICONDATA lpData ) Library \实例变量定义:
Constant long WM_SYSCOMMAND = 274 Constant long SC_RESTORE = 61728
integer LastState //注释:保留原窗口状态 //注释:---------- dwMessage可以是以下NIM_ADD、NIM_DELETE、NIM_MODIFY 标识符之一
Constant long NIM_ADD =0 //注释:在任务栏中增加一个图标 Constant long NIM_DELETE =2 //注释:删除任务栏中的一个图标 Constant long NIM_MODIFY = 1//注释:修改任务栏中个图标信息
Constant long NIF_MESSAGE = 1// 注释:NOTIFYICONDATA结构中uFlags的控制信息
Constant long NIF_ICON = 2 Constant long NIF_TIP =4
Constant long WM_MOUSEMOVE = 512//注释:当鼠标指针移至图标上 Constant long WM_LBUTTONUP = 514 Constant long WM_RBUTTONUP =517 NOTIFYICONDATA myData
w_example窗口的open事件:
If this. WindowState = Minimized! Then LastState = Normal! Else
LastState = this.WindowState End If
myData.cbSize = 256
mydata.hwnd =handle(this) mydata.uID = 0
mydata.uFlags = NIF_ICON + NIF_MESSAGE + NIF_TIP mydata.uCallbackMessage = WM_MOUSEMOVE
mydata.hIcon = this.Icon//注释:默认为窗口图标 mydate.szTip = \提示\
Shell_NotifyIcon(NIM_ADD, myData) 窗口w_example的mousemove事件: choose case long (X)
Case WM_RBUTTONUP //注释:鼠标在图标上右击时弹出菜单 m_popup im_pop
im_pop=create m_popup im_pop.popmemu(x,y) destroy im_pop
Case WM_LBUTTONUP //注释:鼠标在图标上左击时窗口若最小化则恢复窗口位置
If this.WindowState = Minimized Then this.WindowState = LastState this.SetFocus End If end choose
窗口w_example的close事件:
Shell_NotifyIcon(NIM_DELETE, myData)// 注释:窗口卸载时,将状态栏中的图标一同卸载
23、获取文件的相关时间信息 实现步骤 定义结构
type stc_find_data from structure unsignedlong att stc_filetime c_time stc_filetime a_time stc_filetime w_time unsignedlong h_size unsignedlong l_size
unsignedlong dwreserved0 unsignedlong dwreserved1 character cfilename[260]
character calternatefilename[16] end type
type stc_filetime from structure long htime long ltime end type
定义外部函数声明
Function ulong GetFileAttributesA(string lpFileName) LIBRARY \
FUNCTION ulong FindClose(ulong hFindFile) LIBRARY \FUNCTION ulong FindFirstFile(ref string lpFileName,ref stc_find_data lpFindFileData) LIBRARY \