>
Private Sub Form_Unload(Cancel As Integer)
''''程序退出前是热键有效
CndEnable_Click
End Sub
若将此功能和屏幕保护程序结合到一起,那您的屏幕 保护程序一定增色许多。
API函数的简单调用例子就是这么容易,相信现在您 对API的调用已不再感到神秘了,接下来我们就看看一个 比较复杂的应用。
第三节:高手进阶
上面的关于API的调用的例子只是为了带您去Win dows API世界中去探索一下。相信您已探索到了一点眉 目并想去实现一些更"好玩"的东西了。好!下面就向您 介绍一个很"好玩"同时又会使您的程序看起来更专业化 的一个API调用。
相信您的机器上一定装有"金山词霸",试着启动它 您发现了什么?启动画面过后它"不见了"。把鼠标移到 桌面的右下角,原来它以图标的形式"藏在" Windows 的托盘中。用鼠标右击它还会弹出一个菜单功能项供您 选择。现在您一定想把自己的程序也放到托盘,这样您的 程序多具有专业水准!
下面是此功能的实现步骤:
1.这里我们调用的API函数是: "Shell_NotifyIcon",在您的模块中添加如下的函数声明 和常量声明:
''''以下常量告诉系统在托盘中您的图标上发生了什么 操作
''''常量声明
Public Const WM_MOUSEMOVE = &H200 ''''在图标上移动鼠标
Public Const WM_LBUTTONDOWN = &H201 ''''鼠标左键按下
Public Const WM_LBUTTONUP = &H202 ''''鼠标左键释放
Public Const WM_LBUTTONDBLCLK = &H203 ''''双击鼠标左键
Public Const WM_RBUTTONDOWN = &H204 ''''鼠标右键按下
Public Const WM_RBUTTONUP = &H205 ''''鼠标右键释放
Public Const WM_RBUTTONDBLCLK = &H206 ''''双击鼠标右键
Public Const WM_SETHOTKEY = &H32 ''''响应您定义的热键
''''API函数声明
Public Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias " Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
''''自定义一个调用API Shell_NotifyIcon要用到的类 型"NOTIFYICONDATA"
Public Type NOTIFYICONDATA
cdSize As Long ''''NOTIFYICONDATA类型的大小
hwnd As Long ''''你的应用程序窗体的名柄
uId As Long ''''应用程序图标资源的ID号
uFlags As Long ''''使那些参数有效它是以下枚举类型中的
''''NIF_MESSAGE、NIF_ICON、NIF_TIP三组的组合
uCallbackMessage As Long ''''鼠标移动时把此消息发给该图标的窗体
hIcon As Long ''''图标名柄
szTip As String*64 ''''当鼠标在图标上时显示的Tip文本
End Type
''''这是一个枚举类型它告诉API Shell_NotifyIcon去做什么操作
Public Enum enm_NIM_Shell
NIM_ADD=&H40 ''''在“金碟”中加一图标
NIM_MODIFY=&H1 ''''修改“金碟”中的图标
NIM_DELETE=&H2 ''''删除“金碟”中的图标
NIF_MESSAGE=&H1 ''''使类型"NOTIFYICONDATA"中的uCallbackMessage有效
NIF_ICON=&H2 ''''使类型"NOTIFYICONDATA"中的hIcon有效
NIF_TIP=&H4 ''''使类型"NOTIFYICONDATA"中的szTip有效
WM_MOUSEMOVE=&H200 ''''使鼠标移动消息有效
End Enum
''''定义一个"NOTIFYICONDATA"类型的变量
Public nidProgramData As NOTIFYICONDATA
以上是函数及常量声明和自定义的一个类型变量,下 面是此API函数的调用方法:
2. 在窗体上用菜单编辑一个具有如下信息的菜单项:
主菜单:无标题、名称(mainMenu)
子菜单:标题(API编程)、名称(submnul);
标题(退出)、名称(submnu2).
这里只是举个例子,具体的功能你可以根据你的具体需要来编辑此菜单项
3. 在窗体的Load事件中添加如下代码:
Private Sub Form_Load()
''''隐藏窗体
With Me
.Top =-10000
.Left = -10000
.WindowState = vbMinimized
End With
''''设置类型NOTIFYICONDATA所具有的特征
With nidprogramData
.cbSize = Len(nidProgramData)
.hwnd = Me.hwnd .uld = vbNull
.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
''''触发鼠标移动消息
.uCallbackMessage = WM_MOUSEMOVE
.hIcon = Me.Icon ''''“托盘”中放入窗体图标,你可以把窗体的图标换成你所喜欢的图标
.szTip ="VB 的 Win32 API 编程" & vbNullChar
End With
''''调用该函数
Shell_NotifyIcon NIM_ADD,nidprogramData
End Sub
''''根据不同的鼠标消息做不同的操作
Private Sub Form_MouseMove(Button As inte ger, Shift As lnteger, x As Single, Y As Single)
On Error GoTo Form_MouseMove_err:
上一页 [1] [2] [3] [4] [5] 下一页 没有相关教程
|