首页 置换 选车 估价 问答 生活 经销商 车管所 汽车资讯 汽车销量 车牌查询 今日油价 天气预报
您的位置: 首页 > 生活 > 其他 > c语言键盘控制移动(C监听鼠标操作)
c语言键盘控制移动(C监听鼠标操作)
更新时间:2024-07-06 22:09:34

前面两篇都在写关于键盘的监听操作以及衍生的一些自定义处理,这篇写一下关于鼠标的监听操作。

虽然我们一般情况下鼠标用得比较多,但是比起来,反而键盘监听的功能比较实用,而鼠标感觉没什么监听的必要,但是如果你接触过自动化操作脚本之类的话,会发现其实鼠标监听的作用更大;通过这几篇内容,我想我们可以整合一下,做一个简单的操作录制功能,用来解决一下日常的繁琐且循环的操作,这个功能之前有发过一个简单的版本,但不是通过HOOK去实现的,而是让用户自己手动录制,再去执行。

使用HOOK的话,直接监听一遍用户的操作,记录相应的动作即可,同时可操作性也有很大提高(emmmm,我觉得回头有时间我自己先封装下,可能用途还不小,同时想起之前写的关键字查询的工具,以为只是偶尔之需,万万没想到它在我生活、工作中也帮了我很多。。。)

c语言键盘控制移动(C监听鼠标操作)1

这里代码只是做了简单的事件记录,其他操作可根据需求自行处理。

HOOK的工具类可参考前面的文章,这里不赘述,贴下需要更改的代码。

实现功能:

使用C#监听鼠标的按下、弹起等事件

开发环境:

开发工具: Visual Studio 2013

.NET Framework版本:4.5

实现代码:

/// <summary> /// 鼠标结构 /// </summary> [StructLayout(LayoutKind.Sequential)] public class MouseHookStruct { public POInt pt; // 鼠标位置 public int hWnd; public int wHitTestCode; public int dwExtraInfo; } /// <summary> /// 鼠标位置结构 /// </summary> [StructLayout(LayoutKind.Sequential)] public class POINT { public int x; public int y; } //定义为鼠标钩子 public int WH_MOUSE_LL = 14; //相关鼠标事件 public event MouseEventHandler MouseDown; public event MouseEventHandler MouseUp; //相关动作 public const int WM_MOUSEMOVE = 0x200; // 鼠标移动 public const int WM_LBUTTONDOWN = 0x201;// 鼠标左键按下 public const int WM_RBUTTONDOWN = 0x204;// 鼠标右键按下 public const int WM_MBUTTONDOWN = 0x207;// 鼠标中键按下 public const int WM_LBUTTONUP = 0x202;// 鼠标左键抬起 public const int WM_RBUTTONUP = 0x205;// 鼠标右键抬起 public const int WM_MBUTTONUP = 0x208;// 鼠标中键抬起 //hookid private int hookID = 0; private int MouseHookProc(int nCode, int wParam, IntPtr lParam) { if ((nCode >= 0)) { MouseHookStruct hookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct)); MouseEventArgs e = null; switch (wParam) { case WM_LBUTTONDOWN: e = new MouseEventArgs(MouseButtons.Left, 1, hookStruct.pt.x, hookStruct.pt.y, 0); MouseDown(this, e); break; case WM_RBUTTONDOWN: e = new MouseEventArgs(MouseButtons.Right, 1, hookStruct.pt.x, hookStruct.pt.y, 0); MouseDown(this, e); break; case WM_LBUTTONUP: e = new MouseEventArgs(MouseButtons.Left, 1, hookStruct.pt.x, hookStruct.pt.y, 0); MouseUp(this, e); break; case WM_RBUTTONUP: e = new MouseEventArgs(MouseButtons.Right, 1, hookStruct.pt.x, hookStruct.pt.y, 0); MouseUp(this, e); break; default: break; } } return CallNextHookEx(hookID, nCode, wParam, lParam); }

private void MouseDown(object sender, MouseEventArgs e) { listBox1.Items.Add(string.Format("在{0},{1}位置按下了鼠标{2}键", e.X, e.Y, e.Button.ToString())); } private void MouseUp(object sender, MouseEventArgs e) { listBox1.Items.Add(string.Format("在{0},{1}位置松开了鼠标{2}键", e.X, e.Y, e.Button.ToString())); } HookUtil keyHook = new HookUtil(); private void btnBegin_Click(object sender, EventArgs e) { keyHook.MouseDown = new MouseEventHandler(MouseDown); keyHook.MouseUp = new MouseEventHandler(MouseUp); keyHook.StartHook(); btnBegin.Enabled = false; btnEnd.Enabled = true; }

实现效果:

c语言键盘控制移动(C监听鼠标操作)2

由简入繁,拿来即用

更多精彩,请持续关注

V:Csharp 小记

,
相关推荐RECOMMEND
神采奕奕的采是什么意思
意思是形容精力旺盛,容光焕发。出处:明·沈德符《万历野获编·玩具·晋唐小楷真迹》:“韩宗伯所藏曹娥碑,为右军真迹。绢素稍暗,字亦惨淡。细视良久,则笔意透出绢外,神采奕然”。近义词:神采飞扬、满面红光。...
斧铖加身一命休是什么意思
斧铖加身一命休:意思是斧钺一到身上生命就会结束。比喻生命岌岌可危,马上会被杀死。斧钺,汉语词汇。释义为斧与钺。泛指兵器。亦泛指刑罚、杀戮。斧钺,是古代酷刑中的一种,意思是用斧钺劈开头颅,使人致死。另外...
发给朋友的平安夜唯美祝福句子
1、我擦亮阿拉丁的神灯,灯神说:我会满足你一个愿望。我说:请祝福正在看短信的人平安夜快乐!2、平安夜没人陪也无所谓,独处有时也是一种享受。3、如果在平安夜或者圣诞节没有收到你朋友的任何表示,请不要怀疑...
劳动功能障碍十级是什么意思
劳动功能障碍10级是指器官部分缺损,形态异常,无功能障碍,无医疗依赖,生活能自理。《工伤保险条例》第22条第2款规定,劳动功能障碍分为10个伤残等级。最重的为1级,最轻的为10级。生活自理障碍分为三个...
cpa现在全部机考吗
cpa考试为全国统一性考试,全部是机考。即,考生在计算机终端获取试题、作答并提交答题结果。中注协规定,应考人员可以携带蓝色或黑色钢笔、圆珠笔、铅笔、直尺、不具有文字储存及显示、录放功能的计算器等,不得...
形容女生好看的成语
1、金枝玉叶朱唇皓齿2、你慢慢地向我走来:棕绿色的春衫,镶着白花边的翻颈;墨绿色的裤子,两条裤丝似刀削一样;乳白色的高跟鞋,啊,简真就是一尊婷婷玉立的悲翠雕像!3、看见你,我觉得再没有什么是不美的,因...