【问题标题】:how do you simulate a mouse click by pressing a keyboard button in C#如何通过在 C# 中按下键盘按钮来模拟鼠标单击
【发布时间】:2012-01-12 00:06:45
【问题描述】:

我一直在尝试找到一种以编程方式进行鼠标点击的方法,但根据我的水平,我发现的结果很紧张。我知道如何定位鼠标以及除点击之外的所有内容。我也知道有一种方法可以通过按键事件模拟​​键盘按下。所以这让我想知道,有没有办法通过按键盘键来点击鼠标? 我想这样做是因为我正在从事一个教育项目,该项目向初学者展示如何在计算机上执行简单的功能,例如如何创建文件或打开某些程序,所以我需要根据屏幕点击鼠标来工作在我的应用程序之外。这可能吗?所有帮助将不胜感激。

【问题讨论】:

    标签: c# keyboard sendkeys


    【解决方案1】:

    这不是 C# 的答案,但如果您只想自动化教学内容,这可能会有所帮助。您可以捕捉所有动作的视频并突出显示鼠标点击。一个很好的软件是 Camtasia 工作室。这是一款付费软件,但还有其他免费的屏幕录制软件。

    如果您真的只想自动化实际的鼠标点击,请尝试使用 Autoit http://www.autoitscript.com/site/autoit/

    用于动画。您可以编写任何脚本,从键盘按键到屏幕任何区域的鼠标点击。

    如果你想尝试一下,点击任何位置,你要做的就是

    MouseClick("primary", x-coordinate, y-coordinate, number-of-clicks) 
    // number of clicks = 2 for double click
    $pos = MouseGetPos()
    $pos[0] // contains the x coordinate of current mouse pos
    $pos[1] // contains the y coord of current position
    

    【讨论】:

    • 我在 C# 上做这个程序来学习如何编程。您提到的软件看起来很有趣,但我会看一下。感谢您的帮助。
    • 感谢这对我帮助很大 我在哪里可以插入此代码?
    • 您可以从网站链接或直接从这里下载 autoit 的脚本编辑器 autoitscript.com/cgi-bin/getfile.pl?autoit3/autoit-v3-setup.exe 只需将这些行插入编辑器并运行脚本。网站上有关于如何打开计算器程序或记事本并发送按键和关闭它的教程,或者如果您在打开编辑器时按 F1 打开帮助,所有教程和可用功能都会显示出来。
    • 感谢您的帮助,如何关闭此问题或将其标记为已回答?
    • 单击此答案左侧的复选标记。这会将问题标记为已回答。
    【解决方案2】:

    您可以通过以下代码模拟鼠标点击

    using System.Runtime.InteropServices;
    [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
    public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long 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 DoMouseClick()
        {
            //Call the imported function with the cursor's current position
            int X = Cursor.Position.X;
            int Y = Cursor.Position.Y;
            mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
        }
    

    mouse_event 实际执行鼠标点击。

    【讨论】:

    • 感谢您的信息,一个问题,控件附近的红色数字是什么?鼠标事件的坐标?
    • 这些是调用物理鼠标点击的中断
    • 嗯不知道那是什么。肯定会查的。再次感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2018-03-30
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    相关资源
    最近更新 更多