winform模拟鼠标按键的具体实现
今天朋友说被他们公司的学习网站恶心到了,下班后要他看学习资料,看完点下一页,而且一页必须停留多少时间才能点击下一页,想不看都不行,于是晚上我突发奇想要给他做一个模拟鼠标按键的程序,可以让鼠标定时间隔触发单击,顺便做下程序最小化到右下角。
首先要引用下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控件上个图标。运行起来,启动按钮,最小化程序,鼠标就会间隔性地点击啦。
拓展:可以加入键盘按键功能,指定时间模拟出键盘按键。是否还可以加入模拟鼠标滚轮。以后有需要可以继续写出来。
相关文章