原 用go實現跨平台Autoit和按鍵精靈功能範例程式碼

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

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視窗}

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.