using System.Runtime.InteropServices;
namespace WinFormsApp1
{
public partial class Form1 : Form
{
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
}
//[System.Runtime.InteropServices.DllImport("user32")]
//private static extern int mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo);
移动鼠标
//const int MOUSEEVENTF_MOVE = 0x0001;
模拟鼠标左键按下
//const int MOUSEEVENTF_LEFTDOWN = 0x0002;
模拟鼠标左键抬起
//const int MOUSEEVENTF_LEFTUP = 0x0004;
模拟鼠标右键按下
//const int MOUSEEVENTF_RIGHTDOWN = 0x0008;
模拟鼠标右键抬起
//const int MOUSEEVENTF_RIGHTUP = 0x0010;
模拟鼠标中键按下
//const int MOUSEEVENTF_MIDDLEDOWN = 0x0020;
模拟鼠标中键抬起
//const int MOUSEEVENTF_MIDDLEUP = 0x0040;
标示是否采用绝对坐标
//const int MOUSEEVENTF_ABSOLUTE = 0x8000;
模拟鼠标滚轮滚动操作,必须配合dwData参数
//const int MOUSEEVENTF_WHEEL = 0x0800;
[DllImport("user32.dll")]
static extern void mouse_event(MouseEventFlag flags, int dx, int dy, uint data, UIntPtr extraInfo);
[DllImport("user32.dll")]
public static extern int SetCursorPos(int x, int y);
public static void MouseLeftClickEvent(int dx, int dy, uint data)
{
SetCursorPos(dx, dy);
//System.Threading.Thread.Sleep(2 * 1000);
mouse_event(MouseEventFlag.LeftDown, dx, dy, data, UIntPtr.Zero);
mouse_event(MouseEventFlag.LeftUp, dx, dy, data, UIntPtr.Zero);
}
public static void MouseLeftClickEvent(uint data)
{
SetCursorPos(Convert.ToInt32(Cursor.Position.X), Convert.ToInt32(Cursor.Position.Y));
System.Threading.Thread.Sleep(2 * 1000);
mouse_event(MouseEventFlag.LeftDown, Convert.ToInt32(Cursor.Position.X), Convert.ToInt32(Cursor.Position.Y), data, UIntPtr.Zero);
mouse_event(MouseEventFlag.LeftUp, Convert.ToInt32(Cursor.Position.X), Convert.ToInt32(Cursor.Position.Y), data, UIntPtr.Zero);
}
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
isRun = true;
Task.Run(() =>
{
while (isRun)
{
Thread.Sleep(3000);
MouseLeftClickEvent(1);
System.Threading.Thread.Sleep(1000);//延迟 msel 毫秒
KeyBoard.keyPress(KeyBoard.vKeyReturn);//按一下后退(back)键
// MouseLeftClickEvent(500, 500, 1);
}
});
}
bool isRun;
private void button2_Click(object sender, EventArgs e)
{
isRun=false;
}
}
}
c#winform模拟鼠标键盘点击
于 2022-10-20 10:46:14 首次发布