這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
Robotgo v0.40.0對滑鼠鍵盤操作進行了大幅度的完善,由於跨平台切換測試麻煩(合并幾個平台的代碼到對比上傳代碼都浪費了不少時間)和C代碼生產效率與Go和JavaScript不在一個層級上,沒有支援視窗和進程對應視窗的選擇和Bounds,將在下一個版本完善,鍵盤操作可能在某些IME上有些問題請切換到系統IME(目前優先完成視窗控制代碼的問題,後面會解決該問題).
項目地址:https://github.com/go-vgo/robotgo
OSC@GIT:https://git.oschina.net/veni0/robotgo
下面整理本機測試部分的代碼,將會在以後版本陸續完善,並附上注釋(請看清代碼再運行,運行產生的影響概負責):
package mainimport ( . "fmt" "github.com/go-vgo/robotgo")func main() { //鍵盤控制 robotgo.TypeString("Hello World")//輸入Hello World robotgo.KeyTap("enter")//按下enter鍵 robotgo.KeyTap("a", "control") robotgo.KeyTap("h", "command") //隱藏視窗 robotgo.KeyTap("i", "alt", "command") //按下"i", "alt", "command"按鍵組合 arr := []string{"alt", "command"} robotgo.KeyTap("i", arr) //按下"i", "alt", "command"按鍵組合 robotgo.KeyTap("w", "command") //關閉視窗 robotgo.KeyTap("m", "command") //已最小化的視窗 robotgo.KeyTap("f1", "control") robotgo.KeyTap("a", "control") robotgo.KeyToggle("a", "down")//切換a鍵 robotgo.KeyToggle("a", "down", "alt") robotgo.KeyToggle("a", "down", "alt", "command") robotgo.KeyToggle("enter", "down") robotgo.TypeString("en") //滑鼠控制 robotgo.MoveMouse(100, 200)//移動滑鼠到100, 200位置 robotgo.MouseClick()//滑鼠左鍵單擊 robotgo.MouseClick("right", false) //按右鍵 robotgo.MouseClick("left", true) //左鍵雙擊 robotgo.ScrollMouse(10, "up")//向上滾動滑鼠 robotgo.MouseToggle("down", "right")//滑鼠右鍵切換 robotgo.MoveMouseSmooth(100, 200)//平滑移動滑鼠到100, 200 robotgo.MoveMouseSmooth(100, 200, 1.0, 100.0)//設定平滑移動速度 x, y := robotgo.GetMousePos()//擷取滑鼠座標位置 Println("pos:", x, y) if x == 456 && y == 586 { Println("mouse...", "586") } robotgo.MouseToggle("up") robotgo.MoveMouse(x, y) robotgo.MoveMouse(100, 200) for i := 0; i < 1080; i += 1000 { Println(i) robotgo.MoveMouse(800, i) } //螢幕控制 //robotgo.CaptureScreen() // bit_map := robotgo.CaptureScreen() // Println("CaptureScreen...", bit_map) gbit_map := robotgo.Capture_Screen()//擷取螢幕位元影像 Println("Capture_Screen...", gbit_map.Width) sx, sy := robotgo.GetScreenSize()//擷取螢幕width和height Println("...", sx, sy) color := robotgo.GetPixelColor(100, 200)//擷取座標100, 200的顏色 Println("color----", color, "-----------------") color2 := robotgo.GetPixelColor(10, 20)//擷取座標10, 20的顏色 Println("color---", color2) // Bitmap abit_map := robotgo.CaptureScreen()//擷取全屏位元影像 Println("a...", abit_map) bit_map := robotgo.CaptureScreen(100, 200, 30, 40) //擷取100, 200, 30, 40的位元影像 Println("CaptureScreen...", bit_map) // Println("...", bit_map.Width, bit_map.BytesPerPixel) fx, fy := robotgo.FindBitmap(bit_map)//尋找位元影像 Println("FindBitmap------", fx, fy) bit_pos := robotgo.GetPortion(bit_map, 10, 10, 11, 10)//截取位元影像 Println(bit_pos) bit_str := robotgo.TostringBitmap(bit_map)//Tostring位元影像 Println("bit_str...", bit_str) // sbit_map := robotgo.BitmapFromstring(bit_str, 2) // Println("...", sbit_map) robotgo.SaveBitmap(bit_map, "test.png")//儲存位元影像為圖片 robotgo.SaveBitmap(bit_map, "test31.tif", 1) robotgo.Convert("test.png", "test.tif")//轉換位元影像圖片格式 open_bit := robotgo.OpenBitmap("test.tif")//開啟圖片位元影像 Println("open...", open_bit) //全域監聽事件 Println("---請按v鍵---") eve := robotgo.AddEvent("v") if eve == 0 { Println("---你按下v鍵---", "v") } Println("---請按k鍵---") keve := robotgo.AddEvent("k") if keve == 0 { Println("---你按下k鍵---", "k") } Println("---請按滑鼠左鍵---") mleft := robotgo.AddEvent("mleft") if mleft == 0 { Println("---你按下左鍵---", "mleft") } // mright := robotgo.AddEvent("mright") // if mright == 0 { // Println("---你按下右鍵---", "mright") // } // robotgo.LStop() //視窗 abool := robotgo.ShowAlert("hello", "robotgo")//快顯視窗 if abool == 0 { Println("ok@@@", "確認") } robotgo.ShowAlert("hello", "robotgo", "確認", "取消") // robotgo.GetPID() mdata := robotgo.GetActive()//擷取當前視窗 hwnd := robotgo.GetHandle()//擷取當前視窗hwnd Println("hwnd---", hwnd) title := robotgo.GetTitle()//擷取當前視窗標題 Println("title-----", title) robotgo.CloseWindow()//關閉當前視窗 robotgo.SetActive(mdata)//SetActive視窗}