我如何计算 Go 中的鼠标点击次数?

How can I count mouse clicks in Go?

我正在尝试编写一个程序来计算自启动后每 30 秒按下鼠标左右键的次数,以便获得鼠标的统计信息 activity。但它不计算单个右键单击,它计算右键单击为左键单击 + 右键单击​​组合。即使根本没有点击,它也不会在 30 秒后输出结果,而是在 30 秒后等待按下鼠标按钮。我很难过。我应该改变什么来解决这个问题?这是我的代码。

package main

import (
    "fmt"
    "github.com/go-vgo/robotgo"
    "time"
)

const t = 30

func leftclickcounter () (int) {
    nowTime := time.Now().Unix()
    nowTime = time.Now().Unix()
    NumOfLeftClick := 0
    for {
        lmb := robotgo.AddMouse("left" )
        if lmb {
            fmt.Println("leftclick")
            NumOfLeftClick++
        }
        if time.Now().Unix()-nowTime >= t {
            return NumOfLeftClick
        }
    }
}

func rightclickcounter () (int) {
    nowTime := time.Now().Unix()
    nowTime = time.Now().Unix()
    NumOfRightClick := 0
    for {
        rmb := robotgo.AddMouse("right")
        if rmb {
            fmt.Println("rightclick")
            NumOfRightClick++
        }
        if time.Now().Unix() - nowTime >= t {
            return NumOfRightClick
        }
    }
}

func main() {
    for {
        lc := leftclickcounter()
        rc := rightclickcounter()
        fmt.Println("Number of leftclicks:", lc)
        fmt.Println("Number of rightclicks:", rc)
    }

    var input string
    fmt.Scanln(&input)
}

除了Flimzy

提到的经过时间

你是 运行 无限循环中的无限循环,rightclickcounter() 永远不会执行。至少不在你的时间范围内。

当前,您正在启动 lc 计数器 -> 等待 30 秒 -> 启动 rc 计数器 -> 等待 30 秒

for {
        lc := leftclickcounter()
        rc := rightclickcounter()
        fmt.Println("Number of leftclicks:", lc)
        fmt.Println("Number of rightclicks:", rc)
    }

看看https://gobyexample.com/goroutines and https://tour.golang.org/concurrency/2