我正在尝试编写一个程序,该程序自启动以来每隔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)
}
答案 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/goroutines和https://tour.golang.org/concurrency/2