【问题标题】:Save and Export Mouse co-ordinates Visual Studio C#保存和导出鼠标坐标 Visual Studio C#
【发布时间】:2014-02-12 08:35:22
【问题描述】:

我正在尝试创建一个应用程序,使用该应用程序我可以在框架内的任何位置单击并拖动鼠标,并且相应的鼠标坐标应保存到堆栈或列表中,并且我应该能够导出列出到数据库或 Excel 文件中。

目前我可以使用检索鼠标坐标,

base.OnMouseMove(e);
x = e.X;
y = e.Y;
toolStripStatusLabelXY.Text = x.ToString();
toolStripStatusLabel1.Text = y.ToString();

是否可以在 C# win32 表单应用程序中执行此操作。

谢谢

【问题讨论】:

    标签: c# visual-studio-2010 visual-studio winapi mouseevent


    【解决方案1】:

    将此引用添加到代码

    using System.Runtime.InteropServices;
    

    并将此代码添加到您的代码中

    [DllImport("user32.dll", CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]
    public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons,uint dwExtraInfo);
    
    private const int MOUSEEVENTF_LEFTDOWN = 0x02;
    private const int MOUSEEVENTF_LEFTUP = 0x04;
    private const int MOUSEEVENTF_RIGHTDOWN = 0x08;
    private const int MOUSEEVENTF_RIGHTUP = 0x10;
    
    public void DoLeftMouseClick(int x int y)
    {
        //this function perfoms left click a position you want
        mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, x, y, 0, 0);
    }
    
    public void DoLeftMouseClick(int x int y)
    {
        //this function perfoms right click a position you want
        mouse_event(MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, x, y, 0, 0);
    }
    

    如果你想拖动使用theese;

    public void DoLeftMouseClickDown(int x int y)
    {
        mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0);
    }
    
    public void DoLeftMouseClickUp(int x int y)
    {
        mouse_event(MOUSEEVENTF_LEFTUP, x, y, 0, 0);
    }
    
    public void DoLeftMouseClickDown(int x int y)
    {
        mouse_event(MOUSEEVENTF_RIGHTDOWN , x, y, 0, 0);
    }
    
    public void DoLeftMouseClickUp(int x int y)
    {
        mouse_event(MOUSEEVENTF_RIGHTUP, x, y, 0, 0);
    }
    

    像这样使用这些;

    DoLeftMouseClickDown(positionToClick.X,positionToClick.Y);
    DoLeftMouseClickUp(positionToDrag.X,positionToDrag.Y)
    

    这会将位于 positionToClick 的项目拖动到 positionToDrag

    【讨论】:

    • 感谢您的回复,我的问题不是获取鼠标坐标,而是将坐标导出到列表中。有可能吗?
    • 是的,您可以使用 List points = new List();并用于保存 points.add(e.Location);如果你想给他们写一个文件,那是我不能写进那个评论的另一回事。
    • 在列表中添加点后,是否可以查看列表?
    • 当然可以。 'foreach(Point o in points){ listBox1.Items.Add("X ="+o.X+" Y="+o.Y);}
    猜你喜欢
    • 2014-05-23
    • 2013-04-30
    • 1970-01-01
    • 1970-01-01
    • 2020-06-30
    • 2018-08-22
    • 2017-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多