RobotGo, Go Native cross-platform RPA and GUI automation @vcaesar
Go to file
2017-09-18 21:00:22 +08:00
.github Update README.md and issue_temp 2017-05-25 22:36:51 +08:00
base Update and fix bitmap 2017-08-24 20:34:45 +08:00
bitmap Add find some color 2017-09-14 23:02:43 +08:00
clipboard Update CHANGELOG.md 2017-07-02 12:52:25 +08:00
docs Update docs 2017-08-21 22:51:42 +08:00
event Format some code 2017-05-10 21:04:55 +08:00
examples Update examples 2017-09-18 21:00:22 +08:00
key Fix release key 2017-06-30 21:22:34 +08:00
mouse Format some code 2017-05-10 13:50:28 +08:00
screen Format some code 2017-05-10 13:50:28 +08:00
test Update explain 2017-02-10 00:19:10 +08:00
vendor Update vendor 2017-08-30 23:04:34 +08:00
window Update pid type and fix windows err 2017-07-13 22:40:56 +08:00
.gitignore Update .gitignore 2017-06-30 21:46:55 +08:00
circle.yml Update and fix circle 2017-08-24 20:48:09 +08:00
CONTRIBUTING.md Update Contribution.md 2017-03-14 00:12:49 +08:00
LICENSE Update LICENSE 2016-11-30 16:39:30 +08:00
README_zh.md Update findbit api to classics 2017-08-24 21:31:42 +08:00
README.md Update findbit api to classics 2017-08-24 21:31:42 +08:00
robotgo.go Add find some color 2017-09-14 23:02:43 +08:00

Robotgo

CircleCI Status Go Report Card GoDoc Release Join the chat at https://gitter.im/go-vgo/robotgo

Golang Desktop Automation. Control the mouse, keyboard, bitmap, read the screen, Window Handle and global event listener.

RobotGo supports Mac, Windows, and Linux(X11).

This is a work in progress.

简体中文

Contents

Docs

Requirements:

Now, Please make sure Golang, GCC, zlib and libpng is installed correctly before installing RobotGo.

If you do not need bitmap, you can switch to the robot branch, where there is no zlib and libpng dependency.

ALL:

Golang
GCC
zlib & libpng (bitmap)

For Mac OS X:

Xcode Command Line Tools
brew install libpng
brew install homebrew/dupes/zlib

For Windows:

MinGW or other GCC

zlib & libpng (bitmap need it.)
Zlib & libpng Windows32 GCC's Course
Download include zlib & libpng Windows64 GCC

For everything else:

GCC
    
X11 with the XTest extension (also known as the Xtst library)

Event:
    
xcb, xkb, libxkbcommon
Ubuntu:
sudo apt-get install gcc libc6-dev

sudo apt-get install libx11-dev
sudo apt-get install xorg-dev
sudo apt-get install libxtst-dev libpng++-dev   

sudo apt-get install xcb libxcb-xkb-dev x11-xkb-utils libx11-xcb-dev libxkbcommon-x11-dev
sudo apt-get install libxkbcommon-dev

sudo apt-get install xsel
sudo apt-get install xclip

Fedora:

sudo dnf install libxkbcommon-devel libXtst-devel libxkbcommon-x11-devel xorg-x11-xkb-utils-devel

sudo dnf install libpng-devel

sudo dnf install xsel
sudo dnf install xclip

Installation:

go get github.com/go-vgo/robotgo

It's that easy!

png.h: No such file or directory? Please see issues/47.

Update:

go get -u github.com/go-vgo/robotgo  

Examples:

Mouse

package main

import (
	"github.com/go-vgo/robotgo"
)

func main() {
  robotgo.ScrollMouse(10, "up")
  robotgo.MouseClick("left", true)
  robotgo.MoveMouseSmooth(100, 200, 1.0, 100.0)
} 

Keyboard

package main

import (
  "fmt"

  "github.com/go-vgo/robotgo"
)

func main() {
  robotgo.TypeString("Hello World")
  robotgo.KeyTap("enter")
  robotgo.TypeString("en")
  robotgo.KeyTap("i", "alt", "command")
  arr := []string{"alt", "command"}
  robotgo.KeyTap("i", arr)

  robotgo.WriteAll("Test")
  text, err := robotgo.ReadAll()
  if err == nil {
    fmt.Println(text)
  }
} 

Screen

package main

import (
	"fmt"

	"github.com/go-vgo/robotgo"
)

func main() {
  x, y := robotgo.GetMousePos()
  fmt.Println("pos:", x, y)
  color := robotgo.GetPixelColor(100, 200)
  fmt.Println("color----", color)
} 

Bitmap

package main

import (
	"fmt"

	"github.com/go-vgo/robotgo"
)

func main() {
  bitmap := robotgo.CaptureScreen(10, 20, 30, 40)
  fmt.Println("...", bitmap)

  fx, fy := robotgo.FindBitmap(bitmap)
  fmt.Println("FindBitmap------", fx, fy)

  robotgo.SaveBitmap(bitmap, "test.png")
} 

Event

package main

import (
	"fmt"

	"github.com/go-vgo/robotgo"
)

func main() {
  keve := robotgo.AddEvent("k")
  if keve == 0 {
    fmt.Println("you press...", "k")
  }

  mleft := robotgo.AddEvent("mleft")
  if mleft == 0 {
    fmt.Println("you press...", "mouse left button")
  }
} 

Window

package main

import (
	"fmt"

	"github.com/go-vgo/robotgo"
)

func main() {
  fpid, err := robotgo.FindIds("Google")
  if err == nil {
    fmt.Println("pids...", fpid)
  }

  isExist, err := robotgo.PidExists(100)
  if err == nil {
    fmt.Println("pid exists is", isExist)
  }

  abool := robotgo.ShowAlert("test", "robotgo")
  if abool == 0 {
 	  fmt.Println("ok@@@", "ok")
  }

  title := robotgo.GetTitle()
  fmt.Println("title@@@", title)
} 

Plans

  • Update Find an image on screen, read pixels from an image
  • Update Window Handle
  • Support UTF-8, transitional plan: TypeStr
  • Try support Android, maybe support IOS
  • Remove zlib/libpng dependencies

Donate

Supporting robotgo, buy me a coffee.

Paypal

Donate money by paypal to my account vzvway@gmail.com

Contributors

License

Robotgo is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0), with portions covered by various BSD-like licenses.

See LICENSE-APACHE, LICENSE-MIT.