你是否还在为桌面自动化烦恼?RobotGo 是 Golang 编写的跨平台自动化库,支持 macOS、Windows 和 Linux,可以轻松实现鼠标控制、键盘输入、屏幕捕获、图像识别、窗口操作和全局事件监听。本文将从零开始带你掌握 RobotGo 的核心用法,并提供完整代码示例,让你快速上手,打造属于自己的桌面自动化工具!
Github:github.com/go-vgo/robo...

什么是 RobotGo?
RobotGo 是一个使用 Go 语言 开发的开源桌面自动化库,专为 MacOS、Windows 和 Linux(X11) 平台设计。它提供了丰富的 API 来帮助开发者实现:
- 鼠标移动、点击、拖动、滚动
- 键盘按键模拟与快捷键组合
- 屏幕截图、图像识别与查找
- 窗口操作(激活、查找、杀死进程)
- 全局事件监听(键盘/鼠标钩子)
它非常适合用于开发自动化脚本、游戏外挂辅助、UI 测试工具等场景。
为什么选择 RobotGo?
- 跨平台:支持三大主流操作系统。
- 高性能:底层采用 C/C++ 绑定,执行效率高。
- 简单易用:Go 语言接口简洁,文档齐全。
- 功能丰富:覆盖桌面自动化的几乎所有需求。
- 活跃维护:GitHub 上持续更新,社区活跃。
安装准备
在使用 RobotGo 前,请确保你的系统中已经安装以下依赖:
- macOS:
bash
xcode-select --install
-
Windows: 推荐使用 MinGW-w64 ,并将其
bin
路径添加到环境变量中。 -
Linux(Ubuntu/Debian):
bash
sudo apt install gcc libpng-dev xorg-dev libxtst-dev libx11-dev xsel xclip
然后安装 Go 模块:
bash
go get -u github.com/go-vgo/robotgo
快速入门:基础操作演示
我们先来看几个最常用的 RobotGo 功能:
1. 控制鼠标
go
import (
"github.com/go-vgo/robotgo"
)
func main() {
robotgo.Move(100, 200) // 移动鼠标到坐标 (100, 200)
robotgo.Click("left") // 左键单击
}
2. 模拟键盘输入
go
package main
import (
"github.com/go-vgo/robotgo"
)
func main() {
robotgo.KeyTap("enter") // 按下回车键
robotgo.TypeStr("Hello World!") // 输入文本
}
3. 截图与保存图片
go
package main
import (
"github.com/go-vgo/robotgo"
"github.com/vcaesar/imgo"
)
func main() {
bit := robotgo.CaptureScreen(10, 10, 300, 200) // 截取指定区域
defer robotgo.FreeBitmap(bit) // 释放内存
img := robotgo.ToImage(bit)
imgo.Save("screenshot.png", img) // 保存为 PNG 文件
}
全局事件监听(键盘/鼠标钩子)
需要额外安装 gohook
模块:
bash
go get -u github.com/robotn/gohook
代码示例:
go
package main
import (
"fmt"
"github.com/go-vgo/robotgo"
hook "github.com/robotn/gohook"
)
func main() {
evChan := hook.Start()
defer hook.End()
for ev := range evChan {
// hook: 2025-06-13 23:49:27.3701298 +0800 CST m=+2.724828801 - Event: {Kind: KeyDown, Rawcode: 87, Keychar: 65535}
fmt.Println("hook: ", ev)
if ev.Kind == hook.KeyDown || ev.Kind == hook.KeyUp {
// ev.Keycode -> 转键盘映射
// 为避免死循环,这里用w键进行示意
robotgo.KeyTap("w")
}
}
}
更多功能一览
Scroll
鼠标滚轮控制TypeStr
支持中文输入CaptureImg
截图并返回整个屏幕的图像对象KeyTap / KeyToggle
键盘模拟Alert / ReadAll / WriteAll
弹窗、剪贴板读写