【问题标题】:How can I count number of clicks anywhere on screen in C#?如何在 C# 中计算屏幕上任意位置的点击次数?
【发布时间】:2023-04-04 13:28:01
【问题描述】:

我正在尝试在 Windows 的后台运行一个 C# 程序,该程序将打印“Hello!”在看到用户点击了他或她的鼠标 10 次之后。但不只是在控制台窗口中,在屏幕上的任何位置。

以下用于点击跟踪的事件处理程序来自 msdn.microsoft.com:

private void OnMouseDownClickCount(object sender, MouseButtonEventArgs e) {
    // Checks the number of clicks.
    if (e.ClickCount == 1) {
        // Single Click occurred.
        lblClickCount.Content = "Single Click";
    }
    if (e.ClickCount == 2) {
        // Double Click occurred.
        lblClickCount.Content = "Double Click";
    }
    if (e.ClickCount >= 3) {
        // Triple Click occurred.
        lblClickCount.Content = "Triple Click";
    }
}

但是,我不确定如何真正使用这个。当我在任何地方添加这个函数时,MouseButtonEventArgs 类型是未定义的。

我需要什么“使用”语句?我如何才能真正让这段代码正常运行——我是否从main 调用它一次?我该怎么称呼它?

编辑:这是显示 Visual Studio 不理解 MouseButtonEventArgs 的图片:

【问题讨论】:

  • 为了捕捉鼠标事件,您必须创建一个 WinForms 或 WPF 项目。
  • 改用 MouseClicke 和 MouseDoubleClick 事件
  • 你到底想做什么?
  • 我试图让一个 C# 程序在后台运行,该程序在运行时计算屏幕上任意位置的点击次数。我不希望它必须在任何 C# 窗口中,而是在屏幕上的任何位置。
  • 要捕获点击anywhere内置事件不会削减它,而是您需要 SetWindowsHookEx+WH_MOUSE_LL 例如stackoverflow.com/questions/11607133/global-mouse-event-handler

标签: c# .net windows winapi events


【解决方案1】:

最初您必须选择表单并转到属性,这里您必须转到事件区域并且有 MouseClick 事件。单击鼠标单击。转到窗口后面的代码。有自动生成的点击事件。在该 Form_MouseClick 事件中,您可以计算点击次数。

首先声明一个变量

int count = 0;

在方法中

Private void Form_MouseClick(object sender, MouseEventArgs e)
{
    count++;
    //add lable which will displays the count value
    label.Text=count.ToString();
}

我认为这将有助于计算表单中的点击次数。

【讨论】:

    【解决方案2】:

    我不完全确定您要完成什么,但是.. 为了跟踪用户点击,我在 Windows 窗体应用程序的窗体上连接了“MouseDown”事件。 从那里我检查事件处理程序中的点击次数。

    using System;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplicationTest
    {
    public partial class Form1 : Form
    {
       public Form1()
        {
            InitializeComponent( );
            this.MouseDown += Form1_MouseDown;
        }
    
        private void Form1_MouseDown( object sender, MouseEventArgs e )
        {
            // Count clicks 
        }
    }
    }
    

    【讨论】:

    • 我正在尝试在 Windows 的后台运行一个 C# 程序,该程序将打印“Hello!”在看到用户点击了他或她的鼠标 10 次之后。但不仅仅是在控制台窗口中,在屏幕上的任何地方。我什至不确定您的解决方案是如何工作的。
    • 您所说的是 Windows Hooks (WH_MOUSE)。如果你不确定我的代码是如何工作的,那么处理 Windows Hooks 对于你当前的水平来说可能有点太高级了。话虽如此,这里有一个链接,您可以在其中阅读有关使用钩子的信息。 msdn.microsoft.com/en-us/library/windows/desktop/…
    • 不是有一个名为GetAsyncKeyState 的Win32 API 调用吗?没有办法简单地使用它吗?
    猜你喜欢
    • 1970-01-01
    • 2014-10-19
    • 1970-01-01
    • 2020-10-05
    • 1970-01-01
    • 2022-06-22
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    相关资源
    最近更新 更多