谁能用c语言写一个钩子函数的例子

谁能用c语言写一个钩子函数的例子,第1张

例子:

HWND hWnd = NULL//定义成全局变量

HHOOK hKeyboard

HHOOK hMouse

LRESULT CALLBACK MouseProc( int nCode, WPARAM wParam, LPARAM lparam )// 鼠标钩子函数

{

return 1 // 返回非零值表示已经对当前消息进行了处理,这样系统就不会再将这个消息传递给目标窗口过程

}

LRESULT CALLBACK KeyboardProc( int nCode, WPARAM wParam, LPARAM lparam )

if( VK_F4 == wParam &&(1 == (lparam>>29&1)) )// 系统后门:Alt+F4键退出程序

{

::SendMessageA( hWnd, WM_CLOSE, 0, 0 )

定义钩子函数

钩子函数是一种特殊的回调函数。钩子监视的特定事件发生后,系统会调用钩子函数进行处理。不同事件的钩子函数的形式是各不相同的。下面以鼠标钩子函数举例说明钩子函数的原型:

LRESULT CALLBACK HookProc(int nCode ,WPARAM wParam,LPARAM lParam)

参数wParam和 lParam包含所钩消息的信息,比如鼠标位置、状态,键盘按键等。nCode包含有关消息本身的信息,比如是否从消息队列中移出。 我们先在钩子函数中实现自定义的功能,然后调用函数 CallNextHookEx.把钩子信息传递给钩子链的下一个钩子函数。CallNextHookEx.的原型如下:

LRESULT CallNextHookEx( HHOOK hhk, int nCode, WPARAM wParam, LPARAM lParam ) 参数 hhk是钩子句柄。nCode、wParam和lParam 是钩子函数。

当然也可以通过直接返回TRUE来丢弃该消息,就阻止了该消息的传递。

钩子函数(Hook)是Windows编程里的东西,跟C语言没有关系,任何语言都可以调用钩子。

如果你想用钩子写一些程序的话,可以参考下面这个博文:

http://blog.csdn.net/whatday/article/details/8006225

当然最好还是去看MSDN!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11798181.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存