public partial class DemoForm : Form
{
[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
}
[DllImport("user32.dll")]
static extern bool SetCursorPos(int X, int Y);
[DllImport("user32.dll")]
static extern void mouse_event(MouseEventFlag flags, int dx, int dy, uint data, UIntPtr extraInfo);
//const int AnimationCount = 80;
//private Point endPosition;
//private int count;
public DemoForm()
{
InitializeComponent();
}
private void btnStart_Click(object sender, EventArgs e)
{
MoveToCtrl(tabPage2,chkAnimation.Checked);
mouse_event(MouseEventFlag.LeftDown, 0, 0, 0, UIntPtr.Zero);
mouse_event(MouseEventFlag.LeftUp, 0, 0, 0, UIntPtr.Zero);
MoveToCtrl(tabPage1, chkAnimation.Checked);
mouse_event(MouseEventFlag.LeftDown, 0, 0, 0, UIntPtr.Zero);
mouse_event(MouseEventFlag.LeftUp, 0, 0, 0, UIntPtr.Zero);
MoveToCtrl(button1, chkAnimation.Checked);
mouse_event(MouseEventFlag.LeftDown, 0, 0, 0, UIntPtr.Zero);
mouse_event(MouseEventFlag.LeftUp, 0, 0, 0, UIntPtr.Zero);
MoveToCtrl(tabPage2, chkAnimation.Checked);
mouse_event(MouseEventFlag.LeftDown, 0, 0, 0, UIntPtr.Zero);
mouse_event(MouseEventFlag.LeftUp, 0, 0, 0, UIntPtr.Zero);
}
private void MoveToCtrl(Control ctrl,bool isAnim)
{
this.TopMost=true;//();
Rectangle rect;
int count=80;
Point endPosition=new Point ();
if (ctrl.Parent.GetType() == typeof(TabControl))
{
TabControl tl = (TabControl)ctrl.Parent;
TabPage tp = (TabPage)ctrl;
rect = tl.RectangleToScreen(tl.GetTabRect(tl.TabPages.IndexOf(tp)));
}
else
{
rect = ctrl.RectangleToScreen(ctrl.ClientRectangle);
}
endPosition.X = (rect.Left + rect.Right) / 2;
endPosition.Y = (rect.Top + rect.Bottom) / 2;
if (isAnim)
{
//this.count = AnimationCount;
while (count != 0)
{
System.Threading.Thread.Sleep(10);
int stepx = (endPosition.X - MousePosition.X) / count;
int stepy = (endPosition.Y - MousePosition.Y) / count;
count--;
tbCursor.Text = String.Format("({0}, {1})", MousePosition.X, MousePosition.Y);
mouse_event(MouseEventFlag.Move, stepx, stepy, 0, UIntPtr.Zero);
}
}
else
{
SetCursorPos(endPosition.X, endPosition.Y);
}
SendKeys.Flush();
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("ddd");
}
private void tabControl1_Selecting(object sender, TabControlCancelEventArgs e)
{
if (e.TabPage == tabPage2)
{
MessageBox.Show("2");
}
}
}