zl程序教程

您现在的位置是:首页 >  后端

当前栏目

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

Winform模拟 实现 鼠标 具体 按键
2023-06-13 09:15:06 时间

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

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

  以下是解决方案代码

复制代码代码如下:


[DllImport("user32.dll",CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]
         privatestaticexternintmouse_event(intdwFlags,intdx,intdy,intcButtons,intdwExtraInfo);
         constintMOUSEEVENTF_MOVE=0x0001;     //移动鼠标
       constintMOUSEEVENTF_LEFTDOWN=0x0002;//模拟鼠标左键按下
       constintMOUSEEVENTF_LEFTUP=0x0004;//模拟鼠标左键抬起
       constintMOUSEEVENTF_RIGHTDOWN=0x0008;//模拟鼠标右键按下
       constintMOUSEEVENTF_RIGHTUP=0x0010;//模拟鼠标右键抬起
       constintMOUSEEVENTF_MIDDLEDOWN=0x0020;//模拟鼠标中键按下
       constintMOUSEEVENTF_MIDDLEUP=0x0040;//模拟鼠标中键抬起
       constintMOUSEEVENTF_ABSOLUTE=0x8000;//标示是否采用绝对坐标


       publicForm1()
       {
           InitializeComponent();
       }

         privatevoidtimer1_Tick(objectsender,EventArgse)
       {
           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控件,在窗体变化时触发事件

复制代码代码如下:


privatevoidForm1_Resize(objectsender,EventArgse)
       {
           if(this.WindowState==FormWindowState.Minimized)
           {
               notifyIcon1.Visible=true;
               this.Hide();
               this.ShowInTaskbar=false;//是否在windows任务栏中显示窗体
           }
       }

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

复制代码代码如下:
privatevoidnotifyIcon1_MouseDoubleClick(objectsender,MouseEventArgse)
       {
           if(!this.ShowInTaskbar)
           {              
               this.ShowInTaskbar=true;
               this.Show();
               this.Activate();
               this.WindowState=FormWindowState.Normal;
           }
       }

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