公司前段時間要我寫個小項目需要可以局域網內一個ipad控制另一台pc上的鍵盤輸入,github上找了找,居然有個robotgo庫這么神級的存在,感覺go的庫真是越來越多了,雖然大部分都是第三方的。https://github.com/go-vgo/robotgo
原理很簡單,時間有限boss要一天就搞出來,所有沒有采用我不熟悉的局域網廣播技術,而是直接在在目標pc上用go啟了個服務器,ipad端按下某個按鍵之后發送協議到pc的服務器上,服務器監聽到協議后交給robotgo庫來模擬鍵盤按鍵即可。
package main
import (
"fmt"
"log"
"net/http"
"github.com/go-vgo/robotgo"
)
func main() {
fmt.Println("=-=-=-==-=-=-=-=-=-\nController-PC start...\nPC端占用端口號為:9090\n=-=-=-==-=-=-=-=-=-")
//192.168.30.12
http.HandleFunc("/", receiveClientRequest)
err := http.ListenAndServe(":9090", nil)
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}
func receiveClientRequest(w http.ResponseWriter, r *http.Request) {
r.ParseForm()
// fmt.Println("收到客戶端請求: ", r.Form)
var key string = r.FormValue("key")
fmt.Println("received key: ", key)
robotgo.KeyTap(key)
}
代碼量很少幾行,但在一個問題上卻耗費好幾個小時,那就是在頭幾次編譯robotgo庫時會失敗,提示幾處錯誤,具體不記得了,大概一個問題就是機器沒有gcc環境,需要安裝gcc, 另一個是有了gcc之后還需要在gcc環境里包含zlib和libpng的庫,因為robotgo不僅僅是做鍵盤鼠標模擬,還能做一些圖片處理之類的事,最終要應該是直接用了github上robotgo推薦的帶有zlib和libpng庫的gcc環境:
https://github.com/go-vgo/Mingw (自己網盤里有)
下載好之后貌似無需安裝直接放到C盤,配置一下環境變量: C:\Mingw\bin 加入 PATH.
gcc環境弄好之后就ok了。
