⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 modhook.bas

📁 VB下开发Windows XP风格的控件
💻 BAS
字号:
Attribute VB_Name = "modHookNoFocus"
Option Explicit
'-----------------------------------------------
' modHook.bas 由站长亲自编写的一个最简单的Hook程
' 序,只需要在WinProc过程中的Select Case语句中加
' 入需要拦截的Windows消息,以及你需要完成操作的代
' 码,就可以实现你的Hook程序。
'
' 由任何疑问请Email:    lihui48@263.net
'-----------------------------------------------
Private 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
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Const GWL_WNDPROC As Long = (-4)
Private Const WM_SETFOCUS As Long = &H7

Private OldProc As Long
Private mhWnd As Long

'==================================================
'回调
Private Function WinProc(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

    Select Case wMsg
      Case WM_SETFOCUS
        Exit Function '>---> Bottom
    End Select

    WinProc = CallWindowProc(OldProc, hWnd, wMsg, wParam, lParam)

End Function

'==================================================

'==================================================
'挂钩
Public Sub HookNoFocus(ByVal nhWnd As Long)

    If OldProc <> 0 Then
        Exit Sub '>---> Bottom
    End If

    mhWnd = nhWnd

    OldProc = SetWindowLong(nhWnd, GWL_WNDPROC, AddressOf WinProc)

End Sub

'==================================================

'==================================================
'脱钩
Public Sub UnHookNoFocus()

    If OldProc = 0 Then
        Exit Sub '>---> Bottom
    End If

    SetWindowLong mhWnd, GWL_WNDPROC, OldProc
    OldProc = 0

End Sub

'==================================================

':) Ulli's VB Code Formatter V2.10.8 (2003-01-01 13:56:37) 17 + 48 = 65 Lines

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -