Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

RobotGo, Go Native cross-platform RPA and GUI automation@vcaesar

License

NotificationsYou must be signed in to change notification settings

go-vgo/robotgo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build StatusCircleCI StatusBuild StatusAppveyorGo Report CardGoDocGitHub releaseJoin the chat at https://gitter.im/go-vgo/robotgo

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

RobotGo supports Mac, Windows, and Linux(X11); and robotgo supports arm64 and x86-amd64.

Contents

Docs

Binding:

ADB, packaging android adb API.

Robotn, binding JavaScript and other, support more language.

Requirements:

Now, Please make sureGolang, GCC is installed correctly before installing RobotGo.

ALL:

GolangGCC

For MacOS:

Xcode Command Line Tools (And Privacy setting:#277)

xcode-select --install

For Windows:

MinGW-w64 (Use recommended) or others Mingwllvm-mingw;

Download the Mingw, then set system environment variablesC:\mingw64\bin to the Path.Set environment variables to run GCC from command line.

Or the other GCC (But you should compile the "libpng" with yourself when use thebitmap.)

For everything else:

GCCX11 with the XTest extension (the Xtst library)"Clipboard": xsel xclip"Bitmap": libpng (Just used by the "bitmap".)"Event-Gohook": xcb, xkb, libxkbcommon (Just used by the "hook".)
Ubuntu:
# gccsudo apt install gcc libc6-dev# x11sudo apt install libx11-dev xorg-dev libxtst-dev# Clipboardsudo apt install xsel xclip## Bitmapsudo apt install libpng++-dev# GoHooksudo apt install xcb libxcb-xkb-dev x11-xkb-utils libx11-xcb-dev libxkbcommon-x11-dev libxkbcommon-dev
Fedora:
# x11sudo dnf install libXtst-devel# Clipboardsudo dnf install xsel xclip## Bitmapsudo dnf install libpng-devel# GoHooksudo dnf install libxkbcommon-devel libxkbcommon-x11-devel xorg-x11-xkb-utils-devel

Installation:

With Go module support (Go 1.11+), just import:

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

Otherwise, to install the robotgo package, run the command:

go get github.com/go-vgo/robotgo

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

Update:

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

Note go1.10.x C file compilation cache problem,golang #24355.go mod vendor problem,golang #26366.

package mainimport ("github.com/go-vgo/robotgo")funcmain() {robotgo.MouseSleep=100robotgo.ScrollDir(10,"up")robotgo.ScrollDir(20,"right")robotgo.Scroll(0,-10)robotgo.Scroll(100,0)robotgo.MilliSleep(100)robotgo.ScrollSmooth(-10,6)// robotgo.ScrollRelative(10, -100)robotgo.Move(10,20)robotgo.MoveRelative(0,-10)robotgo.DragSmooth(10,10)robotgo.Click("wheelRight")robotgo.Click("left",true)robotgo.MoveSmooth(100,200,1.0,10.0)robotgo.Toggle("left")robotgo.Toggle("left","up")}
package mainimport ("fmt""github.com/go-vgo/robotgo")funcmain() {robotgo.TypeStr("Hello World")robotgo.TypeStr("だんしゃり",0,1)// robotgo.TypeStr("テストする")robotgo.TypeStr("Hi, Seattle space needle, Golden gate bridge, One world trade center.")robotgo.TypeStr("Hi galaxy, hi stars, hi MT.Rainier, hi sea. こんにちは世界.")robotgo.Sleep(1)// ustr := uint32(robotgo.CharCodeAt("Test", 0))// robotgo.UnicodeType(ustr)robotgo.KeySleep=100robotgo.KeyTap("enter")// robotgo.TypeStr("en")robotgo.KeyTap("i","alt","cmd")arr:= []string{"alt","cmd"}robotgo.KeyTap("i",arr)robotgo.MilliSleep(100)robotgo.KeyToggle("a")robotgo.KeyToggle("a","up")robotgo.WriteAll("Test")text,err:=robotgo.ReadAll()iferr==nil {fmt.Println(text)  }}
package mainimport ("fmt""strconv""github.com/go-vgo/robotgo""github.com/vcaesar/imgo")funcmain() {x,y:=robotgo.Location()fmt.Println("pos: ",x,y)color:=robotgo.GetPixelColor(100,200)fmt.Println("color---- ",color)sx,sy:=robotgo.GetScreenSize()fmt.Println("get screen size: ",sx,sy)bit:=robotgo.CaptureScreen(10,10,30,30)deferrobotgo.FreeBitmap(bit)img:=robotgo.ToImage(bit)imgo.Save("test.png",img)num:=robotgo.DisplaysNum()fori:=0;i<num;i++ {robotgo.DisplayID=iimg1,_:=robotgo.CaptureImg()path1:="save_"+strconv.Itoa(i)robotgo.Save(img1,path1+".png")robotgo.SaveJpeg(img1,path1+".jpeg",50)img2,_:=robotgo.CaptureImg(10,10,20,20)robotgo.Save(img2,"test_"+strconv.Itoa(i)+".png")x,y,w,h:=robotgo.GetDisplayBounds(i)img3,err:=robotgo.CaptureImg(x,y,w,h)fmt.Println("Capture error: ",err)robotgo.Save(img3,path1+"_1.png")  }}
package mainimport ("fmt""github.com/go-vgo/robotgo""github.com/vcaesar/bitmap")funcmain() {bit:=robotgo.CaptureScreen(10,20,30,40)// use `defer robotgo.FreeBitmap(bit)` to free the bitmapdeferrobotgo.FreeBitmap(bit)fmt.Println("bitmap...",bit)img:=robotgo.ToImage(bit)// robotgo.SavePng(img, "test_1.png")robotgo.Save(img,"test_1.png")bit2:=robotgo.ToCBitmap(robotgo.ImgToBitmap(img))fx,fy:=bitmap.Find(bit2)fmt.Println("FindBitmap------ ",fx,fy)robotgo.Move(fx,fy)arr:=bitmap.FindAll(bit2)fmt.Println("Find all bitmap: ",arr)fx,fy=bitmap.Find(bit)fmt.Println("FindBitmap------ ",fx,fy)bitmap.Save(bit,"test.png")}
package mainimport ("fmt""math/rand""github.com/go-vgo/robotgo""github.com/vcaesar/gcv""github.com/vcaesar/bitmap")funcmain() {opencv()}funcopencv() {name:="test.png"name1:="test_001.png"robotgo.SaveCapture(name1,10,10,30,30)robotgo.SaveCapture(name)fmt.Print("gcv find image: ")fmt.Println(gcv.FindImgFile(name1,name))fmt.Println(gcv.FindAllImgFile(name1,name))bit:=bitmap.Open(name1)deferrobotgo.FreeBitmap(bit)fmt.Print("find bitmap: ")fmt.Println(bitmap.Find(bit))// bit0 := robotgo.CaptureScreen()// img := robotgo.ToImage(bit0)// bit1 := robotgo.CaptureScreen(10, 10, 30, 30)// img1 := robotgo.ToImage(bit1)// defer robotgo.FreeBitmapArr(bit0, bit1)img,_:=robotgo.CaptureImg()img1,_:=robotgo.CaptureImg(10,10,30,30)fmt.Print("gcv find image: ")fmt.Println(gcv.FindImg(img1,img))fmt.Println()res:=gcv.FindAllImg(img1,img)fmt.Println(res[0].TopLeft.Y,res[0].Rects.TopLeft.X,res)x,y:=res[0].TopLeft.X,res[0].TopLeft.Yrobotgo.Move(x,y-rand.Intn(5))robotgo.MilliSleep(100)robotgo.Click()res=gcv.FindAll(img1,img)// use find template and siftfmt.Println("find all: ",res)res1:=gcv.Find(img1,img)fmt.Println("find: ",res1)img2,_,_:=robotgo.DecodeImg("test_001.png")x,y=gcv.FindX(img2,img)fmt.Println(x,y)}
package mainimport ("fmt"// "github.com/go-vgo/robotgo"  hook"github.com/robotn/gohook")funcmain() {add()low()event()}funcadd() {fmt.Println("--- Please press ctrl + shift + q to stop hook ---")hook.Register(hook.KeyDown, []string{"q","ctrl","shift"},func(e hook.Event) {fmt.Println("ctrl-shift-q")hook.End()  })fmt.Println("--- Please press w---")hook.Register(hook.KeyDown, []string{"w"},func(e hook.Event) {fmt.Println("w")  })s:=hook.Start()<-hook.Process(s)}funclow() {evChan:=hook.Start()deferhook.End()forev:=rangeevChan {fmt.Println("hook: ",ev)}}funcevent() {ok:=hook.AddEvents("q","ctrl","shift")ifok {fmt.Println("add events...")  }keve:=hook.AddEvent("k")ifkeve {fmt.Println("you press... ","k")  }mleft:=hook.AddEvent("mleft")ifmleft {fmt.Println("you press... ","mouse left button")  }}
package mainimport ("fmt""github.com/go-vgo/robotgo")funcmain() {fpid,err:=robotgo.FindIds("Google")iferr==nil {fmt.Println("pids... ",fpid)iflen(fpid)>0 {robotgo.TypeStr("Hi galaxy!",fpid[0])robotgo.KeyTap("a",fpid[0],"cmd")robotgo.KeyToggle("a",fpid[0])robotgo.KeyToggle("a",fpid[0],"up")robotgo.ActivePid(fpid[0])robotgo.Kill(fpid[0])    }  }robotgo.ActiveName("chrome")isExist,err:=robotgo.PidExists(100)iferr==nil&&isExist {fmt.Println("pid exists is",isExist)robotgo.Kill(100)  }abool:=robotgo.Alert("test","robotgo")ifabool {fmt.Println("ok@@@ ","ok")  }title:=robotgo.GetTitle()fmt.Println("title@@@ ",title)}

Authors

Plans

  • Refactor some C code to Go (such as x11, windows)
  • Better multiscreen support
  • Wayland support
  • Update Window Handle
  • Try to support Android and IOS

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.

SeeLICENSE-APACHE,LICENSE-MIT.


[8]ページ先頭

©2009-2025 Movatter.jp