golang实现模拟键盘按键

Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。GO优点

1、学习曲线容易

2、效率:快速的编译时间,开发效率和运行效率高

3、自由高效:组合的思想、无侵入式的接口

4、强大的标准库

5、部署方便:二进制文件,Copy部署

项目需要可以局域网内一个ipad控制另一台pc上的键盘输入,github上有个robotgo库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了。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Golang实现虚拟局域网(VPN)可以使用第三方库,例如 WireGuard、OpenVPN 或 Tinc。这些库提供了 VPN 协议的实现,可以用于在 Golang 应用程序中创建和管理 VPN 连接。 下面是使用 WireGuard 在 Golang 中创建 VPN 连接的示例代码: ```go package main import ( "fmt" "golang.zx2c4.com/wireguard/wgctrl" ) func main() { // 创建 WireGuard 控制器 client, err := wgctrl.New() if err != nil { panic(err) } defer client.Close() // 创建一个 WireGuard 接口 device, err := client.DeviceCreate(&wgctrl.Config{ PrivateKey: "private-key", ListenPort: 51820, }) if err != nil { panic(err) } defer device.Close() // 配置 WireGuard 接口 err = device.ConfigureDevice(&wgctrl.Config{ PublicKey: "public-key", ListenPort: 51820, Peers: []wgctrl.PeerConfig{{ PublicKey: "peer-public-key", AllowedIPs: []net.IPNet{{IP: net.ParseIP("10.0.0.2"), Mask: net.CIDRMask(24, 32)}}, PersistentKeepaliveInterval: 30, }}, }) if err != nil { panic(err) } // 输出 WireGuard 接口的信息 fmt.Printf("Device name: %s\n", device.Name) fmt.Printf("Device private key: %s\n", device.PrivateKey) fmt.Printf("Device public key: %s\n", device.PublicKey) fmt.Printf("Device listen port: %d\n", device.ListenPort) fmt.Printf("Device peers: %v\n", device.Peers) } ``` 这段代码使用 WireGuard 控制器创建了一个名为 `wg0` 的 WireGuard 接口,配置了该接口的私钥、公钥、监听端口和一个对等体。你可以根据需要添加更多对等体或进行其他配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值