如何解决如何计算Go中的鼠标点击次数?
我正在尝试编写一个程序,该程序自启动以来每隔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)
}
解决方法
除了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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。