控制鼠标移到到特定控件上然后模拟鼠标单击

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

转载于:https://www.cnblogs.com/maxjove/archive/2011/11/21/2356084.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值