用go实现一个通过模拟输入剪切板内容的程序

作者:
淡白
创建时间:
Jun 8, 2021, 8:32:38 PM
工具 Go 225

摘要:简介在有些程序中为了安全起见,禁用了CV大法。在输入很复杂很长窜的字符串时感觉很难受。

简介

在有些程序中为了安全起见,禁用了CV大法。在输入很复杂很长窜的字符串时感觉很难受。于是便有了下面这个程序,该代码的核心部分是通过robotgo这个库封装的C代码实现的,所以没有什么硬代码。

代码


package main

import (
	_ "embed" //Go1.16支持将资源文件一同打包
	"github.com/atotto/clipboard" //读取剪切板
	"github.com/getlantern/systray" //托盘图标
	"github.com/go-vgo/robotgo" //按键库
	"os"
	"strings"
	"test/log"
	"time"
)
//下面这个注释就是添加本地静态资源的
//go:embed assets/jqb.ico
var iconData []byte
func main() {
	 systray.Run(onReady, onExit)
	for {
		if robotgo.AddEvents("i", "ctrl"){
			// 读取剪切板中的内容到字符串
			content, err := clipboard.ReadAll()
			if err != nil {
				log.LogErr(err)
			}
			split := strings.Split(content, "")
			for _, s := range split {
				time.Sleep(time.Millisecond*66)
				robotgo.KeyTap(s)
			}
		}
	}
}
func onReady() {
	systray.SetIcon(iconData)
	systray.SetTitle("帮你输入剪切板")
	systray.SetTooltip("帮你输入剪切板")
	mQuit := systray.AddMenuItem("退出", "点击退出应用程序")
	go func() {
		select {
		case <-mQuit.ClickedCh:
			os.Exit(0)
		}
	}()
}

func onExit() {

}

编译运行

通过命令go build -ldflags "-s -w -H=windowsgui"编译出来的程序没有命令行窗口。运行后在托盘会展示图标,右键可以选择退出。
运行效果image.png
快捷键Ctrl+I就能模拟输入剪切板内的字符串了。
注:并不是所有程序都支持输入,WeGame测试不行。
部分程序不支持,进一步支持需要用到虚拟键盘
https://github.com/ddxoft/master

服务提供商:提速啦