c#模拟鼠标点击左键,这里调用的是windows系统函数,
csharp
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace WindowsFormsAppHalconJiaJuObjectDetection
{
/// <summary>
/// 模拟鼠标点击
/// </summary>
public class MyMouseClick
{
// 定义鼠标事件标志枚举
[Flags]
public enum MouseEventFlags : 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
}
/// <summary>
/// 移动鼠标到一个坐标
/// </summary>
/// <param name="X"></param>
/// <param name="Y"></param>
/// <returns></returns>
[DllImport("user32.dll")]
public static extern bool SetCursorPos(int X, int Y);
// 导入user32.dll中的mouse_event函数
[DllImport("user32.dll")]
public static extern void mouse_event(MouseEventFlags flags, int dx, int dy, uint data, UIntPtr extraInfo);
//获取当前鼠标坐标, 导入user32.dll中的GetCursorPos函数
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool GetCursorPos(out POINT lpPoint);
// 定义POINT结构体
[StructLayout(LayoutKind.Sequential)]
public struct POINT
{
public int X;
public int Y;
}
/// <summary>
/// 点击鼠标左键
/// </summary>
/// <param name="x">坐标x</param>
/// <param name="y">坐标y</param>
public static void MouseLeftClick(int x,int y) {
//移动鼠标到一个坐标
SetCursorPos(x,y);
//鼠标左键按下
mouse_event(MouseEventFlags.LeftDown, 0, 0, 0, UIntPtr.Zero);
//左键释放
mouse_event(MouseEventFlags.LeftUp, 0, 0, 0, UIntPtr.Zero);
}
/// <summary>
/// 双击鼠标左键
/// </summary>
/// <param name="x"></param>
/// <param name="y"></param>
public static void MouseDoubleLeftClick(int x, int y)
{
MouseLeftClick(x,y);
MouseLeftClick(x, y);
}
}
}