您的位置:首页 > 其它

模拟鼠标点击事件

2012-09-19 21:57 316 查看
今天上12306购票,可被气得不轻,首先登陆人数受到了限制,其次买到票还有个排队等待神马的,先不说里头有没有猫腻,电脑直接操作的,需要等待30分钟以上吗??神马查询语言要运行30分钟才能得到个结果出来?赞同网上的言论:“相比较而言,之前的抢票更能接受一些”。

为了查看剩余多少时间,写了个小小的模拟鼠标点击事件,借鉴了网上的一些代码,首先最简单的界面:





上面是TackBar,用于随时调整点击的时间间隔。

按钮则表示开始点击和结束点击。

废话不多上实现点击操作的类代码:

using System;


[code]using System.Runtime.InteropServices;


 


namespace MouseClick


{


 


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);


}


 


public static void MouseLefupEvent(int dx, int dy, uint data)


{


mouse_event(MouseEventFlag.LeftUp, dx, dy, data, UIntPtr.Zero);


}


}


}

[/code]

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

这里仅仅实现了左键按下和左键弹回两个方法,其他的鼠标操作直接照着改就行。

至于调用,我是这样做的:

using System;


[code]using System.Windows.Forms;


 


 


namespace MouseClick


{


public partial class Form1 : Form


{


public Form1()


{


InitializeComponent();


}


 


private void button1_Click(object sender, EventArgs e)


{


timer1.Enabled = !timer1.Enabled;


 


}


 


private void timer1_Tick(object sender, EventArgs e)


{


MouseFlag.MouseLefDownEvent(this.button1.Location.X, this.button1.Location.Y, 0);


MouseFlag.MouseLefupEvent(this.button1.Location.X, this.button1.Location.Y, 0);


}


 


private void trackBar1_Scroll(object sender, EventArgs e)


{


timer1.Interval = trackBar1.Value*1000;


label1.Text = trackBar1.Value + "秒";


}


}


}

[/code]

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

按钮控制timer控件,timer事件执行鼠标按下和弹起操作。附上源代码:源代码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: