winform模拟鼠标按键的具体实现

 更新时间:2013年10月08日 14:24:39   投稿:shangke  
这篇文章介绍了winform模拟鼠标按键的具体实现,有需要的朋友可以参考一下

  今天朋友说被他们公司的学习网站恶心到了,下班后要他看学习资料,看完点下一页,而且一页必须停留多少时间才能点击下一页,想不看都不行,于是晚上我突发奇想要给他做一个模拟鼠标按键的程序,可以让鼠标定时间隔触发单击,顺便做下程序最小化到右下角。

  首先要引用下user32.dll文件,电脑里就有,C:\Windows\System32搜索下出来了,复制出来放到debug目录下就行。

  以下是解决方案代码

复制代码 代码如下:

[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
          private static extern int mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);
          const int MOUSEEVENTF_MOVE = 0x0001;      //移动鼠标
        const int MOUSEEVENTF_LEFTDOWN = 0x0002; //模拟鼠标左键按下
        const int MOUSEEVENTF_LEFTUP = 0x0004; //模拟鼠标左键抬起
        const int MOUSEEVENTF_RIGHTDOWN = 0x0008; //模拟鼠标右键按下
        const int MOUSEEVENTF_RIGHTUP = 0x0010; //模拟鼠标右键抬起
        const int MOUSEEVENTF_MIDDLEDOWN = 0x0020; //模拟鼠标中键按下
        const int MOUSEEVENTF_MIDDLEUP = 0x0040; //模拟鼠标中键抬起
        const int MOUSEEVENTF_ABSOLUTE = 0x8000; //标示是否采用绝对坐标


        public Form1()
        {
            InitializeComponent();
        }

          private void timer1_Tick(object sender, EventArgs e)
        {
            if (rbtnClick.Checked)
            {
                mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, Cursor.Position.X, Cursor.Position.Y, 0, 0);
            }
            if (rbtnDoubClick.Checked)
            {
                mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP | MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, Cursor.Position.X, Cursor.Position.Y, 0, 0);
            }
        }

这是设计界面

 最小化到右下角用了一个notifyIcon控件,在窗体变化时触发事件

复制代码 代码如下:

private void Form1_Resize(object sender, EventArgs e)
        {
            if (this.WindowState == FormWindowState.Minimized)
            {
                notifyIcon1.Visible = true;
                this.Hide();
                this.ShowInTaskbar = false;//是否在windows任务栏中显示窗体
            }
        }

双击最小化图标时要恢复窗体

复制代码 代码如下:

private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            if (!this.ShowInTaskbar)
            {              
                this.ShowInTaskbar = true;
                this.Show();
                this.Activate();
                this.WindowState = FormWindowState.Normal;
            }
        }

  总体工作做好了,记得给notifyIcon控件上个图标。运行起来,启动按钮,最小化程序,鼠标就会间隔性地点击啦。
  拓展:可以加入键盘按键功能,指定时间模拟出键盘按键。是否还可以加入模拟鼠标滚轮。以后有需要可以继续写出来。

相关文章

  • C#实现基于加减按钮形式控制系统音量及静音的方法

    C#实现基于加减按钮形式控制系统音量及静音的方法

    这篇文章主要介绍了C#实现基于加减按钮形式控制系统音量及静音的方法,涉及C#引用user32.dll动态链接库操作系统音量的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • C#使用正则表达式隐藏手机号中间四位为*

    C#使用正则表达式隐藏手机号中间四位为*

    这篇文章主要介绍了C#使用正则表达式隐藏手机号中间四位为*的相关资料,需要的朋友可以参考下
    2017-06-06
  • 一篇文章说通C#的属性Attribute

    一篇文章说通C#的属性Attribute

    这篇文章主要给大家介绍了如何通过一篇文章说通C#的属性Attribute,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Unity ScrollView实现无限循环效果

    Unity ScrollView实现无限循环效果

    这篇文章主要为大家详细介绍了Unity ScrollView实现无限循环效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • C#正则表达式匹配与替换字符串功能示例

    C#正则表达式匹配与替换字符串功能示例

    这篇文章主要介绍了C#正则表达式匹配与替换字符串功能,结合具体实例形式分析了C#字符串正则替换相关类、方法的使用技巧与相关注意事项,需要的朋友可以参考下
    2017-06-06
  • C#中抽象类与接口的区别详解

    C#中抽象类与接口的区别详解

    本文主要介绍了C#中抽象类与接口的区别。具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • C#解决引用类型的深度克隆问题

    C#解决引用类型的深度克隆问题

    本文将给大家介绍如何让引用类型的对象复制以后各自拥有独立的内存从而实现一个对象值的变化不会影响别的对象,文中有相关的代码示例供大家参考,需要的朋友可以参考下
    2024-08-08
  • C#实现XOR密码(异或密码)的示例代码

    C#实现XOR密码(异或密码)的示例代码

    XOR密码(异或密码)是一种简单的加密算法,它使用异或(XOR)操作来对明文和密钥进行加密和解密,本文为大家介绍了C#实现XOR密码的相关知识,希望对大家有所帮助
    2024-01-01
  • C#使用NPOI库读写Excel文件

    C#使用NPOI库读写Excel文件

    这篇文章主要为大家详细介绍了C#使用NPOI库读写Excel文件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • C#处理Paint事件的方法

    C#处理Paint事件的方法

    这篇文章主要介绍了C#处理Paint事件的方法,实例分析了C#使用Paint进行图形绘制的技巧,需要的朋友可以参考下
    2015-06-06

最新评论