【开源项目】花密(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


原创粉丝点击