当前位置:首页 > 网络编程 > 软件语言 > .NET > 使用VB在应用程序中注册热键

使用VB在应用程序中注册热键

点击次数:60 次 发布日期:2008-11-06 08:06:29 作者:源代码网
源代码网推荐
广告载入中
"窗体中
源代码网推荐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
源代码网推荐
源代码网推荐

源代码网推荐

源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华