会员
周边
众包
新闻
博问
闪存
赞助商
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
maxjove
博客园
首页
新随笔
联系
管理
订阅
控制鼠标移到到特定控件上然后模拟鼠标单击
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"); } } }
posted on
2011-11-21 18:37
宋元
阅读(
554
) 评论(
0
)
编辑
收藏
举报
刷新页面
返回顶部
公告