更新时间: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#-实现的鼠标钩子相关推荐

  1. 使用钩子函数[3] - 建立一个全局的鼠标钩子

    分两步: 一.建立 DLL, 并在 DLL 实现钩子的设置.释放和钩子函数; 二.再建一个工程调用测试. 第一步: 做 DLL 先建立一个 DLL 工程, 自动初始的代码如下(去掉注释了): libr ...

  2. 用Delphi实现Windows的鼠标钩子函数

    用Delphi实现Windows的鼠标钩子函数 Delphi是基于PASCAL语言的Windows编程工具,功能十分强大.然而在Delphi的帮助 文件中,对Windows API函数的说明沿袭了 V ...

  3. [转]VSTO Office二次开发应用程序键盘鼠标钩子

    可能在使用VSTO技术对Office的相关程序进行操作时,会碰到用程序去控制一些快捷键的操作,可以对键盘进行挂钩,此时使用P/Invoke函数实现. 原文链接:<VSTO应用程序中加入键盘钩子& ...

  4. 【IPC-钩子】WM_COPYDATA和鼠标钩子小程序

    [IPC-钩子]WM_COPYDATA和鼠标钩子小程序 作者:  来自:  阅读次数: 218 [大 中 小] -------------------------------------------- ...

  5. VSTO Office二次开发键盘鼠标钩子使用整理

    VSTO Office二次开发键盘鼠标钩子使用整理 可能通过程序控制键盘的操作和控制鼠标的一些操作,网上提供比较多的也是比较好的就是通过钩子(Hook)的方式实现. 简单整理了一下,没有找到很好的程序 ...

  6. VSTO Office二次开发应用程序键盘鼠标钩子

    可能在使用VSTO技术对Office的相关程序进行操作时,会碰到用程序去控制一些快捷键的操作,可以对键盘进行挂钩,此时使用P/Invoke函数实现. 原文链接:<VSTO应用程序中加入键盘钩子& ...

  7. 游戏修改器制作教程二:键盘鼠标钩子

    本教程面向有C\C++基础的人,最好还要懂一些Windows编程知识 代码一律用Visual Studio 2013编译,如果你还在用VC6请趁早丢掉它... 写这个教程只是为了让玩家更好地体验所爱的 ...

  8. 小小黑客从鼠标钩子开始,密码看看看

    引论 什么是黑客,不同于骇客,黑客一词来源于"Hacker",意思是劈,斩,对于黑客来说学会入侵和破解是提升自己和学习的过程,最重要的是编程能力,因为依赖大多数工具是体现不出自己水 ...

  9. 全局鼠标钩子:WH_MOUSE_LL, 在【 win 10 上网本】上因为太卡,运行中丢失全局鼠标钩子...

    一台几年前买的上网本,让我安装了一个 win 10,然后用来测试程序的时候, 发现 使用 SetWindowsHookEx(WH_MOUSE_LL, mouseHook, GetModuleHandl ...

  10. 低级鼠标钩子WH_MOUSE_LL

    翻MSDN可知,鼠标钩子类型有两个,一个是WH_MOUSE,另一个是WH_MOUSE_LL, 至于它们的区别,百度了一下: 1.WH_MOUSE只能监控钩子所在模块的鼠标事件. 2.WH_MOUSE_ ...

最新文章

  1. CCNA200-120章节关系
  2. Golang 入门笔记(二)中
  3. 【ruoyi若依】为当前页添加显示事件
  4. Java内存区域分布
  5. 多益网络2014校招的一道笔试题---左旋字符串
  6. 18-elasticsearch集群健康为黄色
  7. [转]awesome-tensorflow-chinese
  8. opencv imshow plt imshow
  9. hive 查询表Wrong FS: hdfs://node1/user/hive/warehouse/test1.db, expected: hdfs://node1.zjn.cn:8020/
  10. Interface和Abstract的区别
  11. GIS在地质灾害危险性评估与灾后重建中的实践技术应用及python机器学习灾害易发性评价模型建立与优化
  12. Gym - 101853E E. Maximum Sum (状压DP)
  13. 湮没在先秦的【文士道】精神
  14. Mac平台配置OpenGL(glut,glew)
  15. 51单片机LED模拟交通灯
  16. 推荐系统 | 威尔逊区间法
  17. 你需要知道的 TCP 三次握手
  18. 人心难测——远离垃圾人
  19. 吴恩达:按照这5步,传统公司也可转型人工智能\n
  20. 阿里云服务器配置(四)

热门文章

  1. ucgui 嵌入式 输入法 包含拼音、笔画、英文、数字与符号的完整输入法软件
  2. 钉钉/企业微信对接用友T+生成财务凭证准备资料
  3. gege.fans上热搜背后是明星私域流量的折射
  4. html添加购买按钮,萤火小程序商城给前端和商品组件增加“购买”按钮的方法...
  5. BAT文件里注释符号
  6. JavaBridge 2.7,版权所有(c)2012-2020 WINSOFT
  7. vscode安装程序员鼓励师插件
  8. TextView常用属性
  9. linux安装完windows字体以后 特别难看,告别 Windows 终端的难看难用,从改造 PowerShell 的外观开始...
  10. 根号n向下取整的c语言编程,【向上取整/向下取整】C语言向上或向下取整 函数...