麦田

不积跬步无以至千里.

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
public static class MouseControl
{
    //下面两个委托和事件 用来给UI显示执行结果的
    public delegate void EventLogHandler(string message);

    public static event EventLogHandler OnEventLog;

    [DllImport("user32.dll")]
    static extern void mouse_event(int flags, int dX, int dY, int buttons, int extraInfo);

    const int MOUSEEVENTF_MOVE = 0x1;//模拟鼠标移动
    const int MOUSEEVENTF_LEFTDOWN = 0x2;//
    const int MOUSEEVENTF_LEFTUP = 0x4;
    const int MOUSEEVENTF_RIGHTDOWN = 0x8;
    const int MOUSEEVENTF_RIGHTUP = 0x10;
    const int MOUSEEVENTF_MIDDLEDOWN = 0x20;
    const int MOUSEEVENTF_MIDDLEUP = 0x40;
    const int MOUSEEVENTF_WHEEL = 0x800;
    const int MOUSEEVENTF_ABSOLUTE = 0x8000;

    public static void MouseMove(int x,int y)
    {
        //控制鼠标移动到坐标x * 65536 / 1920, y * 65536 / 1080这个绝对位置上。1920和1080是电脑屏幕的分辨率
        //分辨率要根据自己的电脑设置正确,不然获取到的坐标不准确。
        mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, x * 65536 / 1920, y * 65536 / 1080, 0, 0);
    }

    public static void MouseClick()
    {
        //鼠标在原地左键点击一次(点下和松开)
        mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
    }

    public static void ShowMessage(string message)
    {
        OnEventLog(message);
    }
}

FORM窗体中 给上面类 注册事件执行方法

public Form1()
{
    InitializeComponent();
    MouseControl.OnEventLog += MouseControl_OnEventLog;
    Control.CheckForIllegalCrossThreadCalls = false;//取消线程间的安全检查
}

 //显示执行记录的方法
 private void MouseControl_OnEventLog(string message)
 {
     this.textBoxLog.Text += DateTime.Now.ToString("HH:mm:ss.fff") + ":" + message + "\r\n";
 }

然后再其他类中需要显示信息,只需要调用 control类调用这个方法就可以,由于是静态类,所以任何地方都可以使用

,MouseControl.ShowMessage("执行完毕");

 

posted on 2025-02-17 11:26  一些记录  阅读(133)  评论(0)    收藏  举报