欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-02-20 09:21:46
  今天朋友说被他们公司的学习网站恶心到了,下班后要他看学习资料,看完点下一页,而且一页必须停留多少时间才能点击下一页,想不看都不行,于是晚上我突发奇想要给他做一个模拟鼠标...

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

  首先要引用下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);
            }
        }

这是设计界面

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

 最小化到右下角用了一个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控件上个图标。运行起来,启动按钮,最小化程序,鼠标就会间隔性地点击啦。
  拓展:可以加入键盘按键功能,指定时间模拟出键盘按键。是否还可以加入模拟鼠标滚轮。以后有需要可以继续写出来。