C#中实现模拟鼠标事件

C#中实现模拟鼠标事件

注 :这段代码是有点问题,当时调试没注意。

其实主要是展示一下

[DllImport(“user32.dll”)]

static extern void mouse_event(MouseEventFlag flags, int dx, int dy, uint data, UIntPtr extraInfo);

的用法,在这段代码中由于button1一直有焦点MainForm_KeyDown运行不了。然而我用了别的方法触发mouse_event结果没执行button1的点击事件。这个我再研究下。

鼠标自动运行事件在程序中也会用到的。它的原理是调用user32.dll的方法运行。
下面的代码是鼠标自动点击事件的一个例子。
新建一个c#窗体工程,在窗口上拖入一个button,注册button的鼠标点击事件。如下:

C#中实现模拟鼠标事件

    public partial class MainForm : Form      {          public MainForm()          {              InitializeComponent();          }          private void button1_Click(object sender, EventArgs e)          {              MessageBox.Show("Button1点击事件!");          }        }

添加一个类,用来调用user32.dll的mouse_event方法:

   public class MouseFlag      {          [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          }          public static  void MouseLefDownEvent(int dx, int dy, uint data)          {              mouse_event(MouseEventFlag.LeftDown,dx, dy, data, UIntPtr.Zero);          }      }

 测试如下:
 在窗体中加一个KeyDown事件,并调用自动点击的方法。

     public partial class MainForm : Form      {          public MainForm()          {              InitializeComponent();          }            private void button1_Click(object sender, EventArgs e)          {              MessageBox.Show("Button1点击事件!");          }            private void MainForm_KeyDown(object sender, KeyEventArgs e)          {              MouseFlag.MouseLefDownEvent(this.button1.Location.X, this.button1.Location.Y,0);          }        }

运行后,窗口有焦点的情况下按键盘的键,会触发button的click事件,如图:
 C#中实现模拟鼠标事件

 

 

你还可能感兴趣:c#界面鼠标拖动   控件在父窗体或屏幕中的绝对坐标

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/110493.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • redhat6配置yum源_centos7yum源的配置

    redhat6配置yum源_centos7yum源的配置一、配置本地yum源首先将已连接和启动时连接勾选上将操作系统镜像上传到虚拟机(/root)上创建一个挂载目录mkdir-p/dvd/iso将iso镜像文件挂载到/dvd/isomount/root/rhel-server-7.0-x86_64-dvd.iso/dvd/iso查看状态df-Th然后进入/etc/yum.repo/创建一个文件并编辑(文件名可以随便,但后缀必须为.repo)vimdvd.repo[dvd]name=dvd..

  • 2021美赛a题思路+参考文献

    2021美赛a题思路+参考文献2021美赛a题思路+参考文献:https://mianbaoduo.com/o/bread/YZackpdy

  • Java物联网方向_物联网专业课程安排——未来主要方向之一

    Java物联网方向_物联网专业课程安排——未来主要方向之一课程1、物联网产业与技术导论使用电子工业出版社《物联网:技术、应用、标准、安全与商业模式》等等教材。在学完高等数学,物理,化学,通信原理,数字电路,计算机原理,程序设计原理等课程后开设本课程,全面了解物联网之RFID、M2M、传感网、两化融合等技术与应用。课程2、C语言程序设计使用清华大学出版社《C语言程序设计》等教材。物联网涉及底层编程,C语言为必修课,同时需要了解OSGi,OPC,S…

  • 沧州文化_沧州古代雅称

    沧州文化_沧州古代雅称沧洲东临渤海,北靠京津,有利的地形形成了四通八达的交通。沧州文化历史悠久,从战国时期沧州就因渤海而得名。沧州人民民风淳朴、勇敢、刚强加上历史的条件关系被人民称为“武建泱泱乎有表海熊风” 沧州的“武术之乡”已被四方的人知晓,那么沧州本土文化你又了解多少?本专题带您了解更多关于沧州文化的内容。农业特产沧州金丝小枣金丝小枣沧州红枣又称金丝小枣,沧县、献县、泊头交界处及其周围是金丝小枣生产地。其中…

  • 稀疏数组(最详解)「建议收藏」

    稀疏数组(最详解)「建议收藏」概念当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组。 稀疏数组的处理方式是:记录数组一共有几行几列,有多少个不同值;把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模 如下图:左边是原始数组,右边是稀疏数组代码实现publicclassSparseArray{publicstaticvoidmain(String[]args){//创建一个二维数组11*110:没有棋子,1:黑..

    2022年10月26日
  • matlab逆变器仿真程序,PWM逆变器Matlab仿真「建议收藏」

    matlab逆变器仿真程序,PWM逆变器Matlab仿真「建议收藏」PWM逆变器Matlab仿真摘要在本设计中,首先,针对课设题目要求,进行了系统的总体方案选择,以及各功能模块的方案论证和选择。选择通过升压斩波电路将输入直流电压升高,再利用全桥逆变方式将直流电转换成50HZ的交流电,控制部分采用PWM斩波控制技术。接着,对各功能模块进行了详细的原理分析和电路设计,同时也对可能出现的直流不平衡等问题进行了考虑。并最终通过MATLAB来实现PWM逆变器…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号