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

时间:2020-10-14 12:36:15

标签: go mouseevent

我正在尝试编写一个程序,该程序自启动以来每隔30秒对鼠标左键和右键按下的次数进行计数,以获取鼠标活动的统计信息。但是它不计算单个右键单击,而是将右键单击计算为左键单击+右键单击组合。此外,即使根本没有点击,它在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)
}

1 个答案:

答案 0 :(得分:0)

除了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/goroutineshttps://tour.golang.org/concurrency/2

相关问题