【开源项目】花密(Flower Password)VB版之全局热键模块
来源:互联网 发布:卖家网 淘宝数据 编辑:程序博客网 时间:2024/05/29 17:02
'*****************************************************************' Copyright (c) 2011-2012 FlowerPassword.com All rights reserved.' Author : xLsDg @ Xiao Lu Software Development Group' Blog : http://hi.baidu.com/xlsdg' QQ : 4 4 7 4 0 5 7 4 0' Version : 1 . 0 . 0 . 0' Date : 2 0 1 2 / 0 4 / 0 7' Description :' History :'*****************************************************************Option ExplicitPrivate Declare Function SetWindowLong _ Lib "user32.dll" _ Alias "SetWindowLongA" (ByVal hwnd As Long, _ ByVal nIndex As Long, _ ByVal dwNewLong As Long) As LongPrivate Declare Function GetWindowLong _ Lib "user32.dll" _ Alias "GetWindowLongA" (ByVal hwnd As Long, _ ByVal nIndex As Long) As LongPrivate Declare Function CallWindowProc _ Lib "user32.dll" _ Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, _ ByVal hwnd As Long, _ ByVal Msg As Long, _ ByVal wParam As Long, _ ByVal lParam As Long) As LongPrivate Declare Function RegisterHotKey _ Lib "user32.dll" (ByVal hwnd As Long, _ ByVal id As Long, _ ByVal fsModifiers As Long, _ ByVal vk As Long) As LongPrivate Declare Function UnregisterHotKey _ Lib "user32.dll" (ByVal hwnd As Long, _ ByVal id As Long) As LongPrivate Const WM_HOTKEY = &H312Private Const MOD_ALT = &H1Private Const MOD_CONTROL = &H2Private Const MOD_SHIFT = &H4Private Const MOD_WIN = &H8Private Const GWL_WNDPROC = (-4)Private preWinProc As LongPrivate Modifiers As Long, uVirtKey As Long, idHotKey As LongPrivate Type taLong ll As LongEnd TypePrivate Type t2Int lWord As Integer hword As IntegerEnd TypePublic Function SetHotKey(ByVal WinHwnd As Long) As Long preWinProc = GetWindowLong(WinHwnd, GWL_WNDPROC) SetWindowLong WinHwnd, GWL_WNDPROC, AddressOf HotKeyProc idHotKey = 1 Modifiers = MOD_WIN uVirtKey = vbKeyS SetHotKey = RegisterHotKey(WinHwnd, idHotKey, Modifiers, uVirtKey)End FunctionPublic Function UnSetHotKey(ByVal WinHwnd As Long) As Long SetWindowLong WinHwnd, GWL_WNDPROC, preWinProc UnSetHotKey = UnregisterHotKey(WinHwnd, uVirtKey)End FunctionPrivate Function HotKeyProc(ByVal hwnd As Long, _ ByVal Msg As Long, _ ByVal wParam As Long, _ ByVal lParam As Long) As Long If Msg = WM_HOTKEY Then If wParam = idHotKey Then Dim lp As taLong, i2 As t2Int lp.ll = lParam LSet i2 = lp If (i2.lWord = Modifiers) And i2.hword = uVirtKey Then Call FrmMain.ShowFrmByHotKey End If End If End If HotKeyProc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam)End Function