问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

VB怎么用HOOK函数拦截按钮的click事件

发布网友 发布时间:2023-04-24 02:55

我来回答

2个回答

热心网友 时间:2023-10-10 23:34

window系统的程序都是消息驱动机制,意思就是说靠消息来响应事件,当我们点击commandbutton时 系统会获取这个消息,然后会把这个 鼠标 或者键盘按键消息发送给 commandbutton 处理消息的一个函数,他人称之为 窗口过程,系统吧消息发送给 该 commandbutton 的窗口过程,该窗口过程 就会按消息 不同种类执行相应的代码,如下代码 是拦截 鼠标和键盘的按键消息,从而 不让窗口过程 调用 click 方法。

’-------------------------------------窗口代码
Private Sub Command1_Click()
MsgBox 1
End Sub
Private Sub Form_Load()
OldPrc = SetWindowLong(Command1.hwnd, -4, AddressOf CommandProc)
End Sub

‘-------------------------------------模块代码
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 SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public OldPrc As Long
Public Function CommandProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Debug.Print Hex(Msg)
If Msg = &H201 Or Msg = &H100 Then Exit Function
CommandProc = CallWindowProc(OldPrc, hwnd, Msg, wParam, lParam)
End Function

'特别说明下,执行 Click 方法的时候是Form窗口的窗口过程调用Click方法,并非是 Command 按钮的窗口过程,系统首先是把消息 发送给 Command 按钮的窗口过程,然后Command 按钮的窗口过程 又把消息 转发给 Form窗口的窗口过程,然后 Form窗口的窗口过程 按消息种类 执行
我们写的 Command的一些方法,
详细内容请参考 MSDN 或者 windows核心编程 的windows消息机制

热心网友 时间:2023-10-10 23:35

为当前线程设一个键盘hook,在过程中判断句柄,如果是按钮,就拦截WM_LBUTTONDOWN消息
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
折儿是什么意思? 什么叫饭折? 饭折是什么意思 私募股权基金6种模式 私募投资业务管理系统 火山仙泉天然矿泉水产品特点 用苏打片带吃带洗真的能生男孩吗 凡山天然苏打水怎么样 美的面包机和面要多久 美的面包机和面的时间要多长 美的面包机怎么用手动操作 什么属相忌讳石狮子 意式焦糖拼配咖啡豆含糖吗 糖心苹果是特殊品种吗 糖心苹果的特征 使徒行者3谁是幕后大佬 使徒行者3人物关系网是怎样的 使徒行者3卧底都有谁及人物关系图 使徒行者3大结局是什么 《腾讯王卡信用卡》金卡与白金卡对比介绍 哪个好? 你以为美国只有星巴克?去洛杉矶,还有这些咖啡值得喝! 方壶紫砂壶泡哪种茶合适呢方壶适合泡什么茶 鞍山游乐场哪里好玩 建龙集团和墨龙集团关系 有在山东墨龙上班的吗 山东墨龙运输不给钱 山东墨龙2022年9月上涨原因 蠲涤的拼音狐蠲涤的拼音是什么 蠲使的拼音狐蠲使的拼音是什么 红辣椒为什么播不了 镜戒jìngjiè什么意思近义词和反义词是什么英文翻译是什么 哪里有北师大小学数学五年级下册第5单元分数混合运算测试的准确答案 亚利桑那州大峡谷到底属于哪个州 著名的“科罗拉多大峡谷”位于美国哪个州? VB中的Hook函数里 用什么来判断某个按键的按键情况? VB如何在模块hook全局热键 里面 实现 自身窗体按钮点击 hook其他exe,添加按钮功能等 蓝米云服务器怎么样 命数的网络解释 命数的网络解释是什么 为什么qq屏幕分享很模糊 键_的成语键_的成语是什么 _键的成语_键的成语是什么 手指这键盘,有脚印,有杯子,有城门,是什么成语 国网河南省电力公司信息通信公司电话是多少? 关于河南电力公司以及分公司的名称 河南电力有限公司的简介 旆旍的解释 眷区的结构眷区的结构是什么 家眷的结构家眷的结构是什么 专项救助一般包括 城镇职工医疗保险大病救助 请问哪里能找到自考 2009年7月网络操作系统2335的参考答案! 微信流量充值30元多少流量 劫_的读音劫_的读音是什么