vb.net++钩子函数 windows钩子函数

vb.net中如何禁用键盘和鼠标

很简单,你怎么不先问我,还在这提问。用api函数,钩子,设置成全局钩子,然后对钩取来的message消息不做处理,也不返回,这样屏蔽了键盘了。钩子函数api好像是什么hook的那个,还有钩子函数的返回函数,以整个自定义函数的指针作参数

站在用户的角度思考问题,与客户深入沟通,找到临汾网站设计与临汾网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、做网站、成都外贸网站建设公司、企业官网、英文网站、手机端网站、网站推广、空间域名、网页空间、企业邮箱。业务覆盖临汾地区。

vb.net HOOK实例

这是微软MSDN官方文档,里面详细介绍了Hook机制,别告诉我你看不懂英文哦

(VS.85).aspx

我当初自己研究Hook技术时就是看的这个

几个重要的函数:

// 安装钩子

HHOOK SetWindowsHookEx(int idHook, // 钩子类型

HOOKPROC lpfn, // 回调函数

HINSTANCE hMod, // 实例句柄

DWORD dwThreadId // 线程ID

); // 返回值:钩子句柄

// 将消息传递给下一个钩子

LRESULT CallNextHookEx(HHOOK hhk, int nCode, WPARAM wParam, LPARAM lParam); // 太累了不想翻译了

// 卸载钩子

BOOL UnhookWindowsHookEx(HHOOK hhk);

// 鉴于你给的悬赏分太低,我就不多写了,自己研究MSDN文档吧,祝你好运

// 顺便再说一句,全局钩子要在DLL中实现

/* 刚才看了你的资料,觉得你这人挺有意思,貌似VB.NET玩得不错,哈哈 */

VB如何实现线程钩子

Windows的钩子函数分两种,一种是全局的,一种是线程的。全局的钩子函数可以捕获任何应用程序的消息,但必须是标准的DLL才能实现,VB做不了。VB可以实现线程的,就是当前应用程序的消息,这对鼠标消息的捕捉有影响。

SetWindowsHookEx定义如下:

Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long

idHook是钩子类型,如WH_KEYBOARD捕捉键盘消息,而WH_MOUSE捕捉鼠标消息。hmod用于全局钩子,VB要实现钩子,必须设为0。dwThreadId用于线程钩子VB中可以设置为App.ThreadID。lpfn为钩子函数,在VB中可以使用AddressOf获得钩子函数的地址。这个函数因为钩子类型不同而有所不同。如键盘钩子为:

Public Function KeyboardProc(ByVal nCode As Long, _

ByVal wParam As Long, _

ByVal lParam As Long) As Long

如果Code不为0,钩子函数必须调用CallNextHookEx,将消息传递给下面的钩子。wParam和lParam不是按键。

可以到这里看看:


当前标题:vb.net++钩子函数 windows钩子函数
标题URL:http://scjbc.cn/article/doopidp.html

其他资讯