C#-实现的鼠标钩子
更新时间:2015年03月11日 14:33:47 投稿:hebedich 我要评论
本文给大家分享的是使用C#实现鼠标钩子功能,程序已能获取鼠标坐标,其他就没别的功能了,有需要的小伙伴参考下吧。
C#实现的鼠标钩子,可以获取鼠标在屏幕中的坐标,记得要以管理员权限运行才行
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;
namespace app01{public partial class Form1 : Form {public delegate int HookProc(int nCode, IntPtr wParam, IntPtr lParam);//定义钩子句柄public static int hHook = 0;//定义钩子类型public const int WH_MOUSE_LL = 14;public HookProc MyProcedure;//安装钩子[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]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", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]public static extern int CallNextHookEx(int idHook, int nCode, IntPtr wParam, IntPtr lParam);[StructLayout(LayoutKind.Sequential)]public class POINT{public int x;public int y;}[StructLayout(LayoutKind.Sequential)]public class MouseHookStruct {public POINT pt;public int hwnd;public int wHitTestCode;public int dwExtraInfo;}public Form1() {InitializeComponent();}private void button1_Click(object sender, EventArgs e) {if (hHook == 0) {MyProcedure = new HookProc(this.MouseHookProc);//这里挂节钩子hHook = SetWindowsHookEx(WH_MOUSE_LL, MyProcedure, Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]), 0);if (hHook == 0) {MessageBox.Show("SetWindowsHookEx Failed");return;}button1.Text = "卸载钩子";} else {bool ret = UnhookWindowsHookEx(hHook);if (ret == false){MessageBox.Show("UnhookWindowsHookEx Failed");return;}hHook = 0;button1.Text = "安装钩子";}}public int MouseHookProc(int nCode, IntPtr wParam, IntPtr lParam) {MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));if (nCode < 0) {return CallNextHookEx(hHook, nCode, wParam, lParam);} else {String strCaption = "x = " + MyMouseHookStruct.pt.x.ToString("d") + " y = " + MyMouseHookStruct.pt.y.ToString("d");this.Text = strCaption;return CallNextHookEx(hHook, nCode, wParam, lParam);}}}
}
C#-实现的鼠标钩子相关推荐
- 使用钩子函数[3] - 建立一个全局的鼠标钩子
分两步: 一.建立 DLL, 并在 DLL 实现钩子的设置.释放和钩子函数; 二.再建一个工程调用测试. 第一步: 做 DLL 先建立一个 DLL 工程, 自动初始的代码如下(去掉注释了): libr ...
- 用Delphi实现Windows的鼠标钩子函数
用Delphi实现Windows的鼠标钩子函数 Delphi是基于PASCAL语言的Windows编程工具,功能十分强大.然而在Delphi的帮助 文件中,对Windows API函数的说明沿袭了 V ...
- [转]VSTO Office二次开发应用程序键盘鼠标钩子
可能在使用VSTO技术对Office的相关程序进行操作时,会碰到用程序去控制一些快捷键的操作,可以对键盘进行挂钩,此时使用P/Invoke函数实现. 原文链接:<VSTO应用程序中加入键盘钩子& ...
- 【IPC-钩子】WM_COPYDATA和鼠标钩子小程序
[IPC-钩子]WM_COPYDATA和鼠标钩子小程序 作者: 来自: 阅读次数: 218 [大 中 小] -------------------------------------------- ...
- VSTO Office二次开发键盘鼠标钩子使用整理
VSTO Office二次开发键盘鼠标钩子使用整理 可能通过程序控制键盘的操作和控制鼠标的一些操作,网上提供比较多的也是比较好的就是通过钩子(Hook)的方式实现. 简单整理了一下,没有找到很好的程序 ...
- VSTO Office二次开发应用程序键盘鼠标钩子
可能在使用VSTO技术对Office的相关程序进行操作时,会碰到用程序去控制一些快捷键的操作,可以对键盘进行挂钩,此时使用P/Invoke函数实现. 原文链接:<VSTO应用程序中加入键盘钩子& ...
- 游戏修改器制作教程二:键盘鼠标钩子
本教程面向有C\C++基础的人,最好还要懂一些Windows编程知识 代码一律用Visual Studio 2013编译,如果你还在用VC6请趁早丢掉它... 写这个教程只是为了让玩家更好地体验所爱的 ...
- 小小黑客从鼠标钩子开始,密码看看看
引论 什么是黑客,不同于骇客,黑客一词来源于"Hacker",意思是劈,斩,对于黑客来说学会入侵和破解是提升自己和学习的过程,最重要的是编程能力,因为依赖大多数工具是体现不出自己水 ...
- 全局鼠标钩子:WH_MOUSE_LL, 在【 win 10 上网本】上因为太卡,运行中丢失全局鼠标钩子...
一台几年前买的上网本,让我安装了一个 win 10,然后用来测试程序的时候, 发现 使用 SetWindowsHookEx(WH_MOUSE_LL, mouseHook, GetModuleHandl ...
- 低级鼠标钩子WH_MOUSE_LL
翻MSDN可知,鼠标钩子类型有两个,一个是WH_MOUSE,另一个是WH_MOUSE_LL, 至于它们的区别,百度了一下: 1.WH_MOUSE只能监控钩子所在模块的鼠标事件. 2.WH_MOUSE_ ...
最新文章
- CCNA200-120章节关系
- Golang 入门笔记(二)中
- 【ruoyi若依】为当前页添加显示事件
- Java内存区域分布
- 多益网络2014校招的一道笔试题---左旋字符串
- 18-elasticsearch集群健康为黄色
- [转]awesome-tensorflow-chinese
- opencv imshow plt imshow
- hive 查询表Wrong FS: hdfs://node1/user/hive/warehouse/test1.db, expected: hdfs://node1.zjn.cn:8020/
- Interface和Abstract的区别
- GIS在地质灾害危险性评估与灾后重建中的实践技术应用及python机器学习灾害易发性评价模型建立与优化
- Gym - 101853E E. Maximum Sum (状压DP)
- 湮没在先秦的【文士道】精神
- Mac平台配置OpenGL(glut,glew)
- 51单片机LED模拟交通灯
- 推荐系统 | 威尔逊区间法
- 你需要知道的 TCP 三次握手
- 人心难测——远离垃圾人
- 吴恩达:按照这5步,传统公司也可转型人工智能\n
- 阿里云服务器配置(四)
热门文章
- ucgui 嵌入式 输入法 包含拼音、笔画、英文、数字与符号的完整输入法软件
- 钉钉/企业微信对接用友T+生成财务凭证准备资料
- gege.fans上热搜背后是明星私域流量的折射
- html添加购买按钮,萤火小程序商城给前端和商品组件增加“购买”按钮的方法...
- BAT文件里注释符号
- JavaBridge 2.7,版权所有(c)2012-2020 WINSOFT
- vscode安装程序员鼓励师插件
- TextView常用属性
- linux安装完windows字体以后 特别难看,告别 Windows 终端的难看难用,从改造 PowerShell 的外观开始...
- 根号n向下取整的c语言编程,【向上取整/向下取整】C语言向上或向下取整 函数...