RobotGo:控制鼠标、键盘、截屏、全局监听

182 阅读3分钟

办公室就剩几盏灯还亮着,墙上的钟都指到十点了。小悠眼睛盯着电脑屏都发直了,揉了揉酸胀的眼睛,还在吭哧吭哧敲键盘。

飞哥伸了个老大的懒腰,椅子被压得吱呀乱叫,往小悠那边蹭了蹭:我说小悠,你敲半天了还没搞定啊?搞这个桌面自动化呢?天天加班手动搞,你不累瘫啊?

小悠手一停,跟飞哥对上眼又嗖地躲开:可不是咋的!纯纯大冤种,手动搞老费时间了,眼睛都快瞅瞎了。正抓瞎找工具呢,再搞不定今晚又得修仙了。

飞哥坐直的时候胳膊肘不小心怼到小悠,俩人瞬间脸涨得通红。他假装咳了两声:给你安利个狠货,叫 RobotGo。用 Golang 写的,不管你是苹果系统、Windows 还是 Linux 都能用。能操控鼠标、自动打字,连截图、图像识别都能整,妥妥摸鱼神器。

小悠直接凑过来,头发丝儿扫过飞哥手背:真的假的?快展开说说!要是真好用,以后加班直接起飞。

飞哥在键盘上一顿猛敲:就说控制鼠标,两行代码搞定。

robotgo.Move(100, 200)
robotgo.Click("left")

运行起来,鼠标自己就跑到 (100,200),还会咔咔点左键,做那些重复点击的活儿可太香了。

小悠脑袋不自觉就往飞哥肩膀上靠,反应过来又像弹簧似的弹开,脸比刚才更红:那打字咋弄?一天天敲那些重复内容,手指都敲成鸡爪了。

飞哥强装镇定:键盘输入更简单,看代码。

robotgo.KeyTap("enter")
robotgo.TypeStr("Hello World!")

robotgo.KeyTap("enter")就是模拟敲回车,robotgo.TypeStr("Hello World!")能自动输出字,以后写重复的直接甩给它就完事儿。

小悠扯了扯飞哥衣服下摆:这玩意儿能截图不?手动截图老麻烦了,每次都得捣鼓半天。

飞哥打开编辑器,声音都有点飘:必须能啊!看这段。

bit := robotgo.CaptureScreen(10, 10, 300, 200)
imgo.Save("screenshot.png", img)
robotgo.FreeBitmap(bit)

bit := robotgo.CaptureScreen(10, 10, 300, 200)框选区域截图,imgo.Save("screenshot.png", img)保存成图片,用完记得用robotgo.FreeBitmap(bit)释放下内存。

小悠盯着屏幕直发懵:功能这么顶?为啥这么牛?不会学起来老费劲吧?我现在脑子都成浆糊了。

飞哥放慢语速:它能跨好几个平台,性能嗷嗷快,底层用 C/C++ 绑定的。Go 语言接口简单得很,文档也全乎,有手就行。而且 GitHub 上总更新,社区也活跃,大胆冲。

小悠往飞哥身边又挪了挪:我用的苹果系统,安装不会整出啥幺蛾子吧?今晚搞不定我真的会谢。

飞哥手指轻轻擦过小悠手背:放心!跟着步骤来就行。

# macOS
xcode-select --install
# Windows 推荐用MinGW-w64,把bin路径加到环境变量里
# Linux(Ubuntu/Debian)
sudo apt install gcc libpng-dev xorg-dev libxtst-dev libx11-dev xsel xclip
# 统一用以下命令安装Go模块
go get -u github.com/go-vgo/robotgo

小悠胳膊肘怼了怼飞哥:对了!这东西能监听键盘鼠标的操作不?有些需求没这个搞不定。

飞哥手速飞快地敲出代码,呼吸都变重了:必须能!得装个gohook模块,命令是go get -u github.com/robotn/goho…,核心代码就这句。

evChan := hook.Start()
// 在循环里获取事件,例如检测到按键按下或释放时,还能模拟按w键

小悠直接给飞哥来了个肩撞:太懂我了兄弟!早知道有这玩意儿,今晚也不至于加这么久班。

飞哥一边收拾东西一边磨磨蹭蹭:赶紧试试,有坑随时喊我。这工具做自动化脚本、UI 测试绝绝子,说不定以后能准时下班,再也不当加班狗了。

办公室的灯一盏接一盏灭掉,黑暗里,飞哥和小悠的手悄悄勾在了一起。