VC++ chap12 hook 和 数据库访问

Lesson 20  hook 和 数据库访问

20.1 HOOK 编程

20.1.1 基本知识

1,将特殊消息屏蔽,安装一个HOOK过程,称为钩子过程。

2,操作系统在传递消息时,将我们感兴趣的消息先传递给hook过程,在此函数中进行检查,然后决定是否放行该消息。

3,安装钩子过程

Setwindowshookex

20.1.2进程内钩子

1,安装鼠标钩子

_1, 定义相应的鼠标钩子过程

LRESULT CALLBACK MouseProc(

  int nCode,      // hook code

  WPARAM wParam,  // message identifier

  LPARAM lParam   // mouse coordinates

)

{

return 1;

}

_2,在 OnInitDialog函数中调用

SetWindowsHookEx(WH_MOUSE,MouseProc,NULL,GetCurrentThreadId());

2,安装键盘钩子

LRESULT CALLBACK KeyboardProc(

  int code,       // hook code

  WPARAM wParam,  // virtual-key code

  LPARAM lParam   // keystroke-message information

)

{ return 1;}

3,对于键盘,可以只屏蔽某些键,如 VK_SPACE, VK_RETURN

4,也可以对特定的键操作,只按某个键退出程序。

_1,因为钩子函数是全局函数,所以发送消息调用全局的sendmessage函数

::sendmessage(g_hWnd,WM_CLOSE,0,0);

因为我们需要目标窗口的句柄,所以定义全部变量 g_hWnd

OnInitDialog函数中,将其初始化为m_hWnd.

5, 发送关闭消息后,将已安装的钩子过程移除

UnhookWindowsHookEx(g_hKeyboard);

原文地址:https://www.cnblogs.com/aprilapril/p/3184377.html