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

📄 cmenuhook.cls

📁 很美的窗口控件,让你的系统界面接近WINDOWS界面...不信你
💻 CLS
字号:
VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
  Persistable = 0  'NotPersistable
  DataBindingBehavior = 0  'vbNone
  DataSourceBehavior  = 0  'vbNone
  MTSTransactionMode  = 0  'NotAnMTSObject
END
Attribute VB_Name = "cMenuHook"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
'==============================================================================
' cMenuHook.cls
'
'   Subclassing Thunk (SuperClass V2) Project
'   Copyright (c) 2002 by Vlad Vissoultchev <wqweto@myrealbox.com>
'
'   Menu hook impl encapsulation
'
' Modifications:
'
' 2002-10-28    WQW     Initial implementation
'
'==============================================================================
Option Explicit
Private Const MODULE_NAME As String = "cMenuHook"
Implements IHookingSink

'==============================================================================
' API
'==============================================================================

'--- window messages
Private Const WM_CREATE                 As Long = &H1

Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long

'==============================================================================
' Constants and member vars
'==============================================================================

Private Const STR_MENU_CLASS        As String = "#32768"

#If DebugMode Then
    Private m_sDebugID          As String
#End If

'==============================================================================
' Base class events
'==============================================================================

Private Sub Class_Initialize()
    '--- install hook
    #If DontHookMenu Then
    #Else
        Set g_oMenuHook = New cHookingThunk
        g_oMenuHook.Hook WH_CALLWNDPROC, Me
    #End If
    #If DebugMode Then
        DebugInit m_sDebugID, MODULE_NAME
    #End If
End Sub

#If DebugMode Then
    Private Sub Class_Terminate()
        DebugTerm m_sDebugID
    End Sub
#End If

'==============================================================================
' IHookingSink interface
'==============================================================================

Private Sub IHookingSink_Before(bHandled As Boolean, lReturn As Long, nCode As SubclassingSink.HookCode, wParam As Long, lParam As Long)

End Sub

Private Sub IHookingSink_After(lReturn As Long, ByVal nCode As SubclassingSink.HookCode, ByVal wParam As Long, ByVal lParam As Long)
    Dim cwp             As CWPSTRUCT
    Dim sClass          As String
    
    If Not g_oCurrentMenu Is Nothing And Not g_oMenuHook Is Nothing Then
        If nCode = HC_ACTION Then
            cwp = g_oMenuHook.CWPSTRUCT(lParam)
            sClass = String(128, 0)
            Call GetClassName(cwp.hwnd, sClass, Len(sClass))
            If InStr(sClass, Chr(0)) > 0 Then
                sClass = Left(sClass, InStr(sClass, Chr(0)) - 1)
                If sClass = STR_MENU_CLASS Then
                    Select Case cwp.message
                    Case WM_CREATE, &H1E2
                        Call g_oCurrentMenu.frSubclassPopup(cwp.hwnd)
                    End Select
                End If
            End If
        End If
    End If
End Sub

⌨️ 快捷键说明

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