包括系统钩子和线程钩子,或者叫全局钩子和私有钩子。系统钩子需要一个单独的DLL,这个地方耽误了不少时间,网上有说可以不用单独DLL的。
现在开始贴代码,代码参照了红黑联盟中的一篇文章。
复制代码 代码如下:
public class SetHook
{
public class HookTypes
{
/// <summary>
/// 钩子类型
/// </summary>
public enum HookType
{
WH_JOURNALRECORD = 0,//对寄送至消息队列的输入消息进行记录
WH_GETMESSAGE = 3,//对寄送至消息队列的消息进行监视
WH_JOURNALPLAYBACK = 1,//对此前由WH_JOURNALRECORD 挂钩处理过程纪录的消息进行寄送
WH_CALLWNDPROC = 4,//在系统将消息发送至目标窗口处理过程之前,对该消息进行监视
WH_CBT = 5,//接受对CBT应用程序有用的消息
WH_MSGFILTER = -1,//监视由对话框、消息框、菜单条、或滚动条中的输入事件引发的消息
WH_SYSMSGFILTER = 6,//监视由对话框,消息框,菜单条,滚动条中的输入事件引发的消息
//8
WH_DEBUG = 9,//对其他钩子处理过程进行调试
WH_SHELL = 10,//接受对外壳应用程序有用的通知
WH_FOREGROUNDIDLE = 11,//当应用程序的前台线程即将进入空闲状态时被调用,它有助于在空闲时间内执行低优先级的任务
#region 鼠标和键盘事件
/// <summary>
/// 对击键消息进行监视
/// </summary>
WH_KEYBOARD = 2,
/// <summary>
/// 只能在windows NT中被安装,用来对底层的键盘输入事件进行监视
/// </summary>
WH_KEYBOARD_LL = 13,
/// <summary>
/// 对鼠标消息进行监视
/// </summary>
WH_MOUSE = 7,
/// <summary>
/// 只能在windows NT中被安装,用来对底层鼠标事件进行监视
/// </summary>
WH_MOUSE_LL = 14,
#endregion
}
}
public abstract class Hooks : HookTypes
{
public delegate int HookProc(int nCode, int wParam, IntPtr IParam);
/// <summary>
/// 安装钩子
/// </summary>
/// <param name="idHook">钩子类型,即它处理的消息类型</param>
/// <param name="lpfn"> 钩子函数地址</param>
/// <param name="hInstance">应用程序实例的句柄。标识包含lpfn所指的子程的DLL</param>
/// <param name="threadId">安装钩子后想监控的线程的ID号, 如果为0,钩子子程与所有的线程关联,即为全局钩子</param>
/// <returns>返回参数为钩子句柄,失败为NULL</returns>
[DllImport("user32.dll", CallingConvention = CallingConvention.StdCall)]
public static extern int SetWindowsHookEx(HookType hooktype, HookProc lpfn, IntPtr hInstance, int threadId);
/// <summary>
/// 卸载钩子
/// </summary>
/// <param name="idHook">要卸载的钩子句柄</param>
/// <returns></returns>
[DllImport("user32.dll", CallingConvention = CallingConvention.StdCall)]
public static extern bool UnhookWindowsHookEx(int idHook);
/// <summary>
/// 继续下一个钩子
/// </summary>
/// <param name="idHook"></param>
/// <param name="nCode"></param>
/// <param name="wParam"></param>
/// <param name="IParam"></param>
/// <returns></returns>
[DllImport("user32.dll", CallingConvention = CallingConvention.StdCall)]
public static extern int CallNextHookEx(int idHook, int nCode, int wParam, IntPtr IParam);
/// <summary>
/// 获取当前线程编号
/// </summary>
/// <returns></returns>
[DllImport("kernel32")]
public static extern int GetCurrentThreadId();
#region
/// <summary>
/// 委托对象
/// </summary>
public HookProc proc;
public abstract int SetWindowsHookEx();
#endregion
}
public class AddHook : Hooks
{
HookType hooktyp;
HookProc hookproc;
public AddHook(HookType _hooktype, HookProc _hookproc)
{
this.hooktyp = _hooktype;
this.hookproc = _hookproc;
}
public int AddPrivateHook()
{
return SetWindowsHookEx();
}
/// <summary>
/// 线程钩子
/// </summary>
/// <returns></returns>
public override int SetWindowsHookEx()
{
//int theadId = System.Threading.Thread.CurrentThread.ManagedThreadId(); 应对GetCurrentThreadId()的过时
int hookId = 0;
object hookId_ = SetWindowsHookEx(this.hooktyp, this.hookproc, IntPtr.Zero, GetCurrentThreadId());
if (hookId_ != null)
{
hookId = (int)hookId_;
}
return hookId;
}
//系统钩子和这差不多,安装钩子的时候后两个参数不一样
}
}
调用我新建了一个类,方便调用线程或者系统钩子,这里就不贴了
相关推荐:
AI人工智能文章生成平台,释放创作无限可能
seo网站排名关键词优化,seo网站关键词优化怎么做 ,ai回廊
SEO网络营销:如何通过精准优化提升品牌价值,青州建设网站电话
ChatGPTDNS出问题?如何快速解决并保障网络畅通,墨镜ai照片
ChatGPT当前不可用?如何应对AI服务中断的挑战,ai文章免费写作app
seo矩阵运营中心是什么,seo矩阵运营中心是什么意思啊 ,北京ai特效
怎么用AI生成文章?全新写作方式的揭秘与应用指南
AI搜索写文章是什么意思?人工智能赋能内容创作的未来,高德地图 ai
优化型网站:提升企业竞争力的必备利器,重庆网站推广工作如何
专业SEO方案助力企业网站流量暴增,精准引流不再是难题,网站建设合同4篇
AI免费免登录:轻松体验人工智能的魔力,无需繁琐注册,华为AI音箱2音质如何
SEO优化全攻略提升网站排名的关键步骤与未来趋势,这是什么新晋动画ai
seo词库优化,搜索词条优化 ,ai点选择
“新热度”:引领潮流的力量,如何趋势的脉搏,浙江通用网站建设特点
什么是seo网络推广,seo网络推广技术 ,ai写真官方
ChatGPTO1免费:突破智能聊天的极限,体验AI无限可能,糯米ai唱歌
ChatGPT不登录,如何畅享AI的智能服务?,手信ai
AI翻译工具的革命-ChatGPT等技术让语言互通无碍,淘宝ai写作检测准吗
优化综合:引领高效发展的智慧之道,电影营销的推广方式
ChatGPT不能加载过去的对话,如何提升你的使用体验?,ai智能衣服
SEO资讯:最新趋势,提升网站排名,快速突破流量瓶颈,廊坊seo推广咨询服务
URL泄露:如何防止信息泄露带来的严重后果,抖音推广营销服务多少钱
seo独立站是什么,独立站推广是什么 ,ai曲线笔刷扩展
二级泛站群,zblog二级泛站群 ,李宗盛ai
ChatGPTCanvex打不开?详细分析及解决方法助你顺利使用,ai2.5d网格线去除
SEO利用:让你的网站快速登顶,获取更多流量与客户!,延边小程序推广平台网站
SEO课:让你从小白变成搜索引擎优化高手,推广自媒体营销计划
文章AI思维导图自动生成助力创作的智慧之源
SEO部:开启数字化营销新纪元的幕后英雄,株洲营销推广是什么公司
仿写AI:智能时代的创作革命,洛江区移动房网站推广
SEO任何:如何通过精准优化让网站流量突破极限,太原网站建设培训班
交友群都有哪些,交友群是干什么的 ,ai猫csgo
SEO表格:优化网站排名的秘密武器,大数据推广营销费用多少
ChatGPT打不开了吗?如何快速解决常见问题,恢复顺畅体验!,ai13212511845
ChatGPT已识别但不可用?揭秘背后原因与解决方案!,小狸ai和斑马ai语文
ChatGPT服务部分恢复:人工智能助力全新体验,ai对象菜单
优化分析:提升企业效益的关键策略,山东大网站建设
优化标题:如何让你的文章更具吸引力与点击力,整站网站优化解决方案
OpenAI您的信用卡被拒绝了?请尝试用借记卡支付,轻松解决支付问题!,ai cdr缩略图补丁
如何查文章AI率?全面解析AI文章检测工具及技巧
AI工具汇总网站,让科技为您的工作加速
一秒采集:提升效率、创造价值的秘密武器,苏州网站整站优化
seo网络推广要做什么,seo 网络推广 ,ai少女喝药
ChatGPT:人工智能对话新时代的领航者,ai音响华为还是小米好
ChatGPT模型进化历程:人工智能的智慧革命,ai 喷枪星空
seo软件工具,seo软件是什么 ,AI妆容
在线AI文章生成:智能写作的无限可能
ChatGPT显示503:如何应对AI服务不可用的困境?,ai宝贝宝贝
互联网资源的无限潜力:如何利用数字世界为个人和企业创造价值,信阳网站建设正规公司
文章缩写AI:高效编辑的未来之光