下面是自己学的时候查到的东西的一些整理,
///
下面开始是整理
windows hook原理:
windows hook api:
C语言windows 键盘Hook:
python 使用win32api windows hook :
使用到的库:
ctypes(通过ctypes来调用Win32API, 主要就是调用钩子函数)
使用的Win32API
SetWindowsHookEx(), 将用户定义的钩子函数添加到钩子链中, 也就是我们的注册钩子函数
UnhookWindowsHookEx(), 卸载钩子函数
CallNextHookEx()在我们的钩子函数中必须调用, 这样才能让程序的传递消息
在没有钩子函数的情况下windows程序运行机制
键盘输入 --> 系统消息队列 --> 对应应用程序的消息队列 --> 将消息发送到对应的窗口中
在有了钩子函数的情况下windows程序运行机制
键盘输入 --> 系统消息队列 --> 对应应用程序消息队列 --> 将消息发送到钩子链中 --> 消息一一调用完毕所有的钩子函数(需要调用CallNextHookEx函数才能将消息传递下去) --> 将消息发送到对应的窗口中
示例程序
注意:
在程序中, 我们通过CFUNCTYPE返回一个类对象, 通过该类对象可以实例化出我们需要的c类型的函数, 但是如果不将他放在全局的话则会失去效果, 因为在C语言中函数是全局的
# -*- coding: utf-8 -*-import os
import sysfrom ctypes import *
from ctypes.wintypes