基本信息
源码名称:C# 模拟 键盘鼠标操作实例 附源码
源码大小:0.03M
文件格式:.zip
开发语言:C#
更新时间:2013-03-24
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
模拟单击开始 按钮
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; namespace SimulateMouse { public partial class DemoForm : Form { [StructLayout(LayoutKind.Sequential)] struct NativeRECT { public int left; public int top; public int right; public int bottom; } [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); [DllImport("user32.dll")] static extern IntPtr FindWindow(string strClass, string strWindow); [DllImport("user32.dll")] static extern IntPtr FindWindowEx(HandleRef hwndParent, HandleRef hwndChildAfter, string strClass, string strWindow); [DllImport("user32.dll")] static extern bool GetWindowRect(HandleRef hwnd, out NativeRECT rect); const int AnimationCount = 80; private Point endPosition; private int count; public DemoForm() { InitializeComponent(); } private void btnStart_Click(object sender, EventArgs e) { NativeRECT rect; IntPtr ptrTaskbar = FindWindow("Shell_TrayWnd", null); if (ptrTaskbar == IntPtr.Zero) { MessageBox.Show("No taskbar found."); return; } IntPtr ptrStartBtn = FindWindowEx(new HandleRef(this, ptrTaskbar), new HandleRef(this, IntPtr.Zero), "Button", null); if (ptrStartBtn == IntPtr.Zero) { MessageBox.Show("No start button found."); return; } GetWindowRect(new HandleRef(this, ptrStartBtn), out rect); endPosition.X = (rect.left rect.right) / 2; endPosition.Y = (rect.top rect.bottom) / 2; if (chkAnimation.Checked) { this.count = AnimationCount; movementTimer.Start(); } else { SetCursorPos(endPosition.X, endPosition.Y); mouse_event(MouseEventFlag.LeftDown, 0, 0, 0, UIntPtr.Zero); mouse_event(MouseEventFlag.LeftUp, 0, 0, 0, UIntPtr.Zero); } } private void movementTimer_Tick(object sender, EventArgs e) { int stepx = (endPosition.X - MousePosition.X) / count; int stepy = (endPosition.Y - MousePosition.Y) / count; count--; if (count == 0) { movementTimer.Stop(); mouse_event(MouseEventFlag.LeftDown, 0, 0, 0, UIntPtr.Zero); mouse_event(MouseEventFlag.LeftUp, 0, 0, 0, UIntPtr.Zero); } tbCursor.Text = String.Format("({0}, {1})", MousePosition.X, MousePosition.Y); mouse_event(MouseEventFlag.Move, stepx, stepy, 0, UIntPtr.Zero); } } }