C# 最简单的全局键盘鼠标钩子
//使用方式//1.在窗口 新建按钮(开始hook) 点击事件中执行Hook_Start//2.在窗口 新建按钮(关闭hook) 点击事件中执行Hook_Clear//3.在KeyBoardHookProc 中编写hook到键盘要进行的操作//4.在MouseHookProc 中编写hook到鼠标要进行的操作//一些依赖项[DllImport("user32.dll")]public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId);[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]public static extern bool UnhookWindowsHookEx(int idHook);[DllImport("user32.dll")]public static extern int CallNextHookEx(int idHook, int nCode, int wParam, IntPtr lParam);[DllImport("kernel32.dll")]public static extern int GetCurrentThreadId();[DllImport("kernel32.dll")]public static extern IntPtr GetModuleHandle(string name);[DllImport("User32.dll")]public static extern void keybd_event(Byte bVk, Byte bScan, Int32 dwFlags, Int32 dwExtraInfo);//鼠标事件映射private const int WM_MOUSEMOVE = 0x200;private const int WM_LBUTTONDOWN = 0x201;private const int WM_RBUTTONDOWN = 0x204;private const int WM_MBUTTONDOWN = 0x207;private const int WM_LBUTTONUP = 0x202;private const int WM_RBUTTONUP = 0x205;private const int WM_MBUTTONUP = 0x208;private const int WM_LBUTTONDBLCLK = 0x203;private const int WM_RBUTTONDBLCLK = 0x206;private const int WM_MBUTTONDBLCLK = 0x209;//鼠标hookpublic const int WH_MOUSE_LL = 14;//键盘hookpublic const int WH_KEYBOARD_LL = 13;public delegate int HookProc(int nCode, int wParam, IntPtr lParam);//回调HookProc KeyBoardHookProcedure;HookProc _mouseHookProcedure;//hook到的消息结构[StructLayout(LayoutKind.Sequential)]public class KeyBoardHookStruct{public int vkCode;public int scanCode;public int flags;public int time;public int dwExtraInfo;}[StructLayout(LayoutKind.Sequential)]public class MouseHookStruct{public POINT pt;public int hWnd;public int wHitTestCode;public int dwExtraInfo;}//开启hookpublic void Hook_Start(){KeyBoardHookProcedure = new HookProc(KeyBoardHookProc);hHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyBoardHookProcedure,GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName), 0);_mouseHookProcedure = new HookProc(MouseHookProc);_hMouseHook = SetWindowsHookEx(WH_MOUSE_LL,_mouseHookProcedure, Marshal.GetHINSTANCE(System.Reflection.Assembly.GetExecutingAssembly().GetModules()[0]), 0);}//关闭hook public void Hook_Clear(){bool retKeyboard = true;bool retMouse = true;retKeyboard = UnhookWindowsHookEx(hHook);hHook = 0;retMouse = UnhookWindowsHookEx(_hMouseHook);_hMouseHook = 0;}//键盘hook到之后的操作private int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam){if (nCode >= 0){KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));if (kbh.vkCode == (int)Keys.D && wParam==256) //D{//如果按下了D 要进行的处理}}return CallNextHookEx(hHook, nCode, wParam, lParam);}//鼠标hook到之后的操作private int MouseHookProc(int nCode, Int32 wParam, IntPtr lParam){MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));int x = MyMouseHookStruct.pt.x;int y = MyMouseHookStruct.pt.y;if ( wParam== WM_LBUTTONDOWN){//鼠标左键按下要进行的处理} return CallNextHookEx(_hMouseHook, nCode, wParam, lParam);}
C# 最简单的全局键盘鼠标钩子相关推荐
- VSTO Office二次开发键盘鼠标钩子使用整理
VSTO Office二次开发键盘鼠标钩子使用整理 可能通过程序控制键盘的操作和控制鼠标的一些操作,网上提供比较多的也是比较好的就是通过钩子(Hook)的方式实现. 简单整理了一下,没有找到很好的程序 ...
- 游戏修改器制作教程二:键盘鼠标钩子
本教程面向有C\C++基础的人,最好还要懂一些Windows编程知识 代码一律用Visual Studio 2013编译,如果你还在用VC6请趁早丢掉它... 写这个教程只是为了让玩家更好地体验所爱的 ...
- 使用钩子函数[3] - 建立一个全局的鼠标钩子
分两步: 一.建立 DLL, 并在 DLL 实现钩子的设置.释放和钩子函数; 二.再建一个工程调用测试. 第一步: 做 DLL 先建立一个 DLL 工程, 自动初始的代码如下(去掉注释了): libr ...
- [转]VSTO Office二次开发应用程序键盘鼠标钩子
可能在使用VSTO技术对Office的相关程序进行操作时,会碰到用程序去控制一些快捷键的操作,可以对键盘进行挂钩,此时使用P/Invoke函数实现. 原文链接:<VSTO应用程序中加入键盘钩子& ...
- VSTO Office二次开发应用程序键盘鼠标钩子
可能在使用VSTO技术对Office的相关程序进行操作时,会碰到用程序去控制一些快捷键的操作,可以对键盘进行挂钩,此时使用P/Invoke函数实现. 原文链接:<VSTO应用程序中加入键盘钩子& ...
- java 模拟鼠标_java实现简单的模拟键盘鼠标操作
简简单单的记录: 近期需要用到模拟键盘鼠标操作,所以记录下来,以备后用,看了很多例子,未标明引用,请见谅 package com.text.jna; import javax.imageio.Imag ...
- [转载]C#模拟键盘鼠标事件-SendKeys
C#模拟键盘鼠标事件-SendKeys 2007-09-18 15:138596人阅读评论(1)收藏举报 1.模拟键盘事件 System.Windows.Forms.SendKeys以下是 Sen ...
- VB 全局Hook鼠标消息
VB 全局Hook鼠标钩子,获取鼠标单击左键.鼠标坐标位置等. 以下是鼠标的按键消息: 键 按下 释放 按下(双击) 左 WM_NCLBUTTONDOWN=&HA1 WM_NCLBUTTONU ...
- C++用钩子模仿按键精灵录制键盘鼠标的功能
最近需要做个跟按键精灵类似的软件,模仿键盘鼠标的动作,然后重播一次,最开时候的时候用键盘钩子和鼠标钩子做的,虽然实现了功能,但是鼠标移动速度非常快,所以换成WH_JOURNALPLAYBACK 和WH ...
- 如何让你的程序避开全局键盘钩子的监视
原文地址:http://blog.okbase.net/BlueSky/archive/3839.html 一直以来有个疑问,就是如果别人在你的电脑上安装了键盘钩子来监视你的键盘按键动作,我的程序怎么 ...
最新文章
- ajax发送post请求_按键精灵安卓版发送post和get请求
- 计算机信息应用知识题库,计算机基础知识题库(含答案).doc
- SAP ABAP 特性相关表取数逻辑
- Win32 SDK 编写截图小工具
- TensorFlow错误:TypeError: __init__() got an unexpected keyword argument 'serialized_options'
- PrimerCH4:表达式
- ie8支持jq的html,jquery 什么版本不能用 ie8
- atoi函数_linux网络编程之POSIX 消息队列 和 系列函数
- android 取色器
- matlab-模拟退火算法
- js一键批量打印_JS 实现选中内容批量打印/导出
- css实现宽高比固定
- 无法上网的N种解决方法
- 2021 区块链行业融资:资本涌入,触发区块链应用的无限可能| 2021 区块链年报|Footprint Analytics
- 九宫格动态密码--快速入门
- 混淆矩阵与miou代码
- 数字IC后端物理实现流程1-环境建立
- Linux framebuffer双缓冲防止闪烁
- 《西部世界:觉醒》游戏开发商分享VR技巧
- php微信 开发笔记,微信WebApp开发总结笔记