使用VB在应用程序中注册热键
来源:互联网 发布:下载鲁大师软件 编辑:程序博客网 时间:2024/05/11 03:42
'窗体中
Option Explicit
Private Sub Form_Load()
Dim ret As Long
'记录原来的window程序地址
preWinProc = GetWindowLong(Me.hWnd, GWL_WNDPROC)
'用自定义程序代替原来的window程序
ret = SetWindowLong(Me.hWnd, GWL_WNDPROC, AddressOf wndproc)
idHotKey = 1 'in the range &h0000 through &hBFFF
Modifiers = MOD_ALT '辅助键为Alt
uVirtKey1 = vbKeyQ '注册的热键为Alt+Q
'注册热键
ret = RegisterHotKey(Me.hWnd, idHotKey, Modifiers, uVirtKey1)
If ret = 0 Then
MsgBox "注册热键失败,请使用其它热键!", vbCritical, "错误"
End If
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Dim ret As Long
'取消Message的截取,使之送往原来的window程序
ret = SetWindowLong(Me.hWnd, GWL_WNDPROC, preWinProc)
Call UnregisterHotKey(Me.hWnd, uVirtKey1)
End Sub
'模块中
'以下程序放在模块中
Option Explicit
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As Long, ByVal id As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
Declare Function UnregisterHotKey Lib "user32" (ByVal hWnd As Long, ByVal id As Long) As Long
Public Const WM_HOTKEY = &H312
Public Const MOD_ALT = &H1
Public Const MOD_CONTROL = &H2
Public Const MOD_SHIFT = &H4
Public Const GWL_WNDPROC = (-4)
Public preWinProc As Long
Public Modifiers As Long, uVirtKey1 As Long, idHotKey As Long
Private Type taLong
ll As Long
End Type
Private Type t2Int
lWord As Integer
hword As Integer
End Type
Public Function wndproc(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim lp As taLong, i2 As t2Int
If Msg = WM_HOTKEY Then
If wParam = idHotKey Then
lp.ll = lParam
LSet i2 = lp
If (i2.lWord = Modifiers) And i2.hword = uVirtKey1 Then
Form1.Visible = Not Form1.Visible
End If
End If
End If
'如果不是热键信息则调用原来的程序
wndproc = CallWindowProc(preWinProc, hWnd, Msg, wParam, lParam)
End Function
- 使用VB在应用程序中注册热键
- 使用VB在应用程序中注册热键
- 使用VB在应用程序中注册热键
- VB在程序中注册热键
- 在应用程序中使用热键
- 在应用程序中使用热键
- VB程序中注册自定义的热键
- VB热键注册
- 在应用程序中使用热键-vc++6_0实现方法
- 在WPF中如何注册热键(转)
- 详解VB中系统热键使用
- 在VB应用程序中使用INI文件
- 在VB中注册控件
- 不用注册热键方式在Delphi中实现定义快捷键
- MFC&CPlus: 在MFC中给程序注册热键
- JIntellitype一个在Java程序中注册热键的库
- [NET]在你的VB.NET应用程序中使用多线程
- 在C#中使用热键隐含窗口
- javac: 找不到文件(赠给初学者的礼物)
- Cookie Handling in WinHTTP
- 吐槽而已
- 目标信息收集
- SQLite在ASP.NET 应用中部署问题
- 使用VB在应用程序中注册热键
- vb 托盘
- Visual Studio使用小技巧3 – 标签分组(Tab Group)和分割窗口(Split window)
- mysql_fetch_array()和 mysql_fetch_array()的区别
- 20110330 主要任务
- ArcGIS 自定义注记的方法
- IIS是神马?
- MBR是什么
- 谈谈制定职业规划的意义