转: C#控制鼠标动作
C#控制鼠标动作
可以通过两个函数操作鼠标:
[DllImport("user32.dll")] static extern bool SetCursorPos(int X, int Y); [DllImport("user32.dll")] static extern void mouse_event(MouseEventFlag flags, int dx, int dy, uint data, UIntPtr extraInfo); [Flags] enum MouseEventFlag : uint { Move = 0x0001, LeftDown = 0x0002, LeftUp = 0x0004, RightDown = 0x0008, RightUp = 0x0010, MiddleDown = 0x0020, MiddleUp = 0x0040, XDown = 0x0080, XUp = 0x0100, Wheel = 0x0800, VirtualDesk = 0x4000, Absolute = 0x8000 }
SetCursorPos使鼠标移动到指定位置;mouse_event使用MouseEventFlag枚举中的Move,也可以使鼠标移动。
mouse_event中使用不同的枚举值可以模拟不同的鼠标事件。
值得注意的是有几点:
- 我们不能用mouse_event(MouseEventFlag.LeftDown, 10, 10, 0, UIntPtr.Zero);去模拟在(10, 10)处的左键事件,我们需要把这步拆成两步:
第一步:移动鼠标到(10,10)处,用SetCursorPos(10, 10);
第二步:触发左键,用mouse_event(MouseEventFlag.LeftDown, 0, 0, 0, UIntPtr.Zero);
本质上是两步的事件,不能把window API 想的太聪明,认为它会自动跑到(10,10)处,再左键
- MouseEventFlag的枚举值可以多个一起用,使用 | 操作符
鼠标左键按下和松开两个事件的组合即一次单击:
mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 )
两次连续的鼠标左键单击事件 构成一次鼠标双击事件:
mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 )
mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 )
- MouseEventFlag中有个Absolute枚举,如果没指定Absolute, 则mouse_event的操作是相对于上次鼠标所在的位置;如果指定了Absolute,则是相对于整个屏幕坐标的位置。
这里要注意,指定Absolute,鼠标的坐标会被约束在[0, 65535]之间。0即对应屏幕左,65535即对应屏幕右下角。
MSDN原话如下:
If MOUSEEVENTF_ABSOLUTE value is specified, dx and dy contain normalized absolute coordinates between 0 and 65,535. The event procedure maps these coordinates onto the display surface. Coordinate (0,0) maps onto the upper-left corner of the display surface, (65535,65535) maps onto the lower-right corner.
所以模拟在(10, 10)处的左键,代码应改为:
mouse_event(MOUSEEVENTF_LEFTDOWN, 10 * 65536 / Screen.PrimaryScreen.Bounds.Width, 10 * 65536 / Screen.PrimaryScreen.Bounds.Height, 0, 0);
如果显示器是一拖二的,想在第二个屏上使用mouse_event,就不能用Screen.PrimaryScreen了
转: C#控制鼠标动作相关推荐
- 如何控制鼠标和键盘的操作
3.8如何控制鼠标和键盘的操作 [问题提出] 要实现远程控制,对受控方鼠标和键盘的控制必不可少. [分析比较] 要实现对鼠标和键盘的控制,必须模拟鼠标和键盘的动作.要模拟鼠标和键盘的动作有两种方法: ...
- python的pynput模块控制鼠标、键盘和监听鼠标、键盘事件
前言 本来在做图形界面时想用监听键盘的方式来实现,快捷键功能的.运用多线程一个线程是运行图形界面,另一个线程监听键盘的动作.可使用的时候发现不太协调,两个进程虽然都能运行但是图形界面会有时卡住,看了文 ...
- 【Python】实现键盘鼠标动作录制和执行的小工具
突发奇想做一个可以实现鼠标键盘操作录制,并可以回放操作的小工具.依托于pynput模块来实现鼠标键盘的控制,tkinter来实现图形界面的绘制.分为以下几个步骤: 一 录制(记录过程,并将用户的操作保 ...
- python控制软件点击_Python小程序 控制鼠标循环点击代码实例
Python小程序 控制鼠标循环点击代码实例 这篇文章主要介绍了Python小程序 控制鼠标循环点击代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以 ...
- 用钩子函数实现鼠标动作录制
在日常的一些操作中,会遇到重复的鼠标动作,类似按键精灵的软件就会成为比较好的助手.这里借助网上查找的资料自己实现了一个简单的鼠标动作录制软件. 完成界面如图: 录制 录制鼠标动作首先需要截获.钩子函数 ...
- python 控制鼠标点击需要100ms为什么_用 Python3 和 OpenCV 替我玩一玩微信小游戏 — 跳一跳 (这算外挂么)...
0 瞎弄 我知道你们喜欢先看效果 手残的我,始终跳不过你们这些超过 50 分的大佬.想起最近在用 Python 学习 ML (Mechine Learning, 机器学习) ,怎么用没学会,倒是里面神 ...
- python怎么控制鼠标_Python使用pyautogui控制鼠标键盘
安装pyautogui模块 在 Windows 上,不需要安装其他模块. 在 OS X 上,运行 sudo pip3 install pyobjc-framework-Quartz,sudo pip3 ...
- python调用键盘_Python直接控制鼠标键盘
Python直接控制鼠标键盘 之前因为期末的原因已经很久没写博客了,今天博主发现一个好玩的模块PyAutoGUI,借助它可以使用Python脚本直接控制键盘鼠标,感觉可以解决很多无聊的机械运动.这里记 ...
- Kinect开发教程四:用Kinect控制鼠标玩水果忍者PC版
最近Kinect连接Xbox玩水果忍者的视频非常红火,可惜小斤只有本本和Kinect,没法玩Xbox上的体感游戏.幸运的是,寻寻觅觅后,小斤发现水果忍者有PC版本,既然上一个教程我们已经可以让Kine ...
最新文章
- 温故而知新-面向对象的PHP
- shell -- shift用法
- etcdctl命令查询etcd信息
- 火山引擎视频云:从toC到toB,如何将最好的技术开放出去
- 如何优雅的升级内核?
- elk查询nginx日志响应时间
- 为什么我们公司强制弃坑Fastjson了?主推...
- ExecutorService中submit和execute、Runnable和Callable
- 与Amnon Shashua的1小时:详解Mobileye自动驾驶进阶之路...
- 常见非功能性需求的描述案例
- typescript 中函数参数为对象如何效验
- 细说自动筛选和高级筛选通过VBA快速文本筛选
- supermap idesktop 许可更新方案
- 华为服务器型号大全rh2288h,华为服务器 RH2288H V3 12*3.5盘位 E5-2680 v4*2 16GB*8 6000G*3 R5 750W*2 4*GE.....
- Springboot高校学生实习档案管理毕业设计-附源码221508
- cad lisp 示坡线_示坡线画法图文教程
- 苹果 macOS 13 开发者预览版 Beta 11(内部版本号:22A5373b)发布
- 知乎问 想找一个linux培训机构,目前看千峰、黑马、达内 北大青鸟等机构,请问哪个好一点?
- 图文详解如何从官网下载Hadoop安装包
- 固态硬盘无法识别,怎么办?4招教您解决!