golang实现模拟键盘按键
Posted 居家懒人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang实现模拟键盘按键相关的知识,希望对你有一定的参考价值。
公司前段时间要我写个小项目需要可以局域网内一个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盘多了个Mingw文件夹。
gcc环境弄好之后就ok了。
以上是关于golang实现模拟键盘按键的主要内容,如果未能解决你的问题,请参考以下文章
.NET(C#) SendKeys模拟键盘按键不生效使用WinAPI的替代方案
纯Java实现跨平台鼠标键盘模拟找图找色,Java版按键精灵