GO脚本-模拟鼠标键盘

01GetCoordinate

获取坐标

复制代码
package main

import (
	"github.com/go-vgo/robotgo"
)

func main() {
	// 获取当前鼠标所在的位置
	x, y := robotgo.GetMousePos()
	println(`x:`, x, ` y:`, y)

}

02GetColor

获取坐标颜色

复制代码
package main

import (
	"fmt"
	"image/color"

	"github.com/kbinani/screenshot"
)

func main() {
	// 定义目标坐标
	targetX := 100
	targetY := 200

	// 获取屏幕边界
	bounds := screenshot.GetDisplayBounds(0)
	width := bounds.Dx()
	height := bounds.Dy()

	// 捕获屏幕
	img, err := screenshot.Capture(0, 0, width, height)
	if err != nil {
		panic(err)
	}

	// 获取目标坐标的颜色
	c := img.At(targetX, targetY).(color.RGBA)

	// 打印颜色信息
	fmt.Printf("坐标(%d, %d)的颜色为 RGB(%d, %d, %d)\n", targetX, targetY, c.R, c.G, c.B)
}

03 操作案例

复制代码
package main

import (
	"fmt"
	"github.com/go-vgo/robotgo"
	"math/rand"
	"time"
)

func main() {

	//两个随机数的代码示例,一个生成3秒至6秒之间的随机数,另一个生成70毫秒至200毫秒之间的随机数:
	min1 := 3   // 最小休息时间(秒)
	max1 := 10  // 最大休息时间(秒)
	min2 := 70  // 最小休息时间(毫秒)
	max2 := 200 // 最大休息时间(毫秒)

	rand.Seed(time.Now().UnixNano())

	// 生成随机的休息时间(秒)
	sleepTime1 := rand.Intn(max1-min1+1) + min1
	fmt.Printf("开始休息 %d 秒钟...\n", sleepTime1)
	time.Sleep(time.Duration(sleepTime1) * time.Second)
	fmt.Println("第一个休息结束!")

	// 生成随机的休息时间(毫秒)
	sleepTime2 := rand.Intn(max2-min2+1) + min2
	fmt.Printf("开始休息 %d 毫秒...\n", sleepTime2)
	time.Sleep(time.Duration(sleepTime2) * time.Millisecond)
	fmt.Println("第二个休息结束!")

	// 获取当前鼠标所在的位置
	x, y := robotgo.GetMousePos()
	println(`x:`, x, ` y:`, y)

	// 第一个客户端角色 坐标,登入游戏
	time.Sleep(time.Duration(sleepTime1) * time.Second)
	robotgo.MoveClick(72, 448, `left`, true)
	time.Sleep(time.Duration(sleepTime1) * time.Second)
	robotgo.MoveClick(72, 448, `left`, true)
	time.Sleep(time.Duration(sleepTime1) * time.Second)
	robotgo.KeyTap("space")
	time.Sleep(time.Duration(sleepTime2) * time.Millisecond)

	// 第二个客户端角色 坐标,登入游戏
	time.Sleep(time.Duration(sleepTime1) * time.Second)
	robotgo.MoveClick(868, 434, `left`, true)
	time.Sleep(time.Duration(sleepTime1) * time.Second)
	robotgo.MoveClick(868, 434, `left`, true)
	time.Sleep(time.Duration(sleepTime1) * time.Second)
	robotgo.KeyTap("space")
	time.Sleep(time.Duration(sleepTime2) * time.Millisecond)

	// 第一个客户端角色 坐标,开启同步
	time.Sleep(time.Duration(sleepTime1) * time.Millisecond)
	robotgo.MoveClick(401, 451, `left`, true)
	time.Sleep(time.Duration(sleepTime1) * time.Millisecond)
	robotgo.KeyTap("space")
	time.Sleep(time.Duration(sleepTime1) * time.Millisecond)
	robotgo.KeyTap("f3", "alt")
	time.Sleep(time.Duration(sleepTime1) * time.Millisecond)
	fmt.Println("第一个客户端角色 坐标,开启同步")

	// 第二个客户端角色 坐标,开启同步
	time.Sleep(time.Duration(sleepTime1) * time.Millisecond)
	time.Sleep(time.Duration(sleepTime1) * time.Millisecond)
	robotgo.MoveClick(1219, 458, `left`, true)
	time.Sleep(time.Duration(sleepTime1) * time.Millisecond)
	robotgo.KeyTap("space")
	time.Sleep(time.Duration(sleepTime1) * time.Millisecond)
	robotgo.KeyTap("f3", "alt")
	time.Sleep(time.Duration(sleepTime1) * time.Millisecond)
	fmt.Println("第二个客户端角色 坐标,开启同步")

	// 第一个客户端角色 坐标,开启同步
	time.Sleep(time.Duration(sleepTime1) * time.Millisecond)
	robotgo.MoveClick(401, 451, `left`, true)
	time.Sleep(time.Duration(sleepTime1) * time.Millisecond)
	robotgo.KeyTap("space")
	time.Sleep(time.Duration(sleepTime2) * time.Millisecond)

	// 模拟按下end
	robotgo.KeyDown("end")
	// 延迟1秒钟
	time.Sleep(1 * time.Second)
	// 松开end
	robotgo.KeyUp("end")
	time.Sleep(time.Duration(sleepTime2) * time.Millisecond)
	time.Sleep(time.Duration(sleepTime2) * time.Millisecond)
	// 模拟按下end
	robotgo.KeyDown("pagedown")
	// 延迟9秒钟
	time.Sleep(9 * time.Second)
	// 松开end
	robotgo.KeyUp("pagedown")
	time.Sleep(time.Duration(sleepTime2) * time.Millisecond)
	time.Sleep(time.Duration(sleepTime1) * time.Millisecond)

	time.Sleep(time.Duration(sleepTime2) * time.Millisecond)
	robotgo.KeyTap("delete")
	time.Sleep(time.Duration(sleepTime2) * time.Millisecond)
	robotgo.KeyTap("delete")
	time.Sleep(time.Duration(sleepTime2) * time.Millisecond)
	robotgo.KeyTap("delete")

	// 模拟按下Delete键
	robotgo.KeyToggle("delete", "down")
	// 延迟0.5秒
	time.Sleep(500 * time.Millisecond)
	// 松开Delete键
	robotgo.KeyToggle("delete", "up")
	time.Sleep(time.Duration(sleepTime1) * time.Millisecond)

	// 模拟按下end键
	robotgo.KeyToggle("home", "down")
	// 延迟0.8秒
	time.Sleep(800 * time.Millisecond)
	// 松开end键
	robotgo.KeyToggle("home", "up")
	time.Sleep(time.Duration(sleepTime1) * time.Millisecond)

	//进入副本
	//robotgo.KeyTap("space")
	//time.Sleep(time.Duration(sleepTime2) * time.Millisecond)
	//robotgo.KeyTap("space")
	//time.Sleep(time.Duration(sleepTime2) * time.Millisecond)
}
相关推荐
噢,我明白了4 小时前
JAVA中的一些基础应用知识点
java·开发语言
时间的拾荒人5 小时前
Redis 入门详解:核心特性、重要文件与全局命令实战
开发语言·redis·面试
敲上瘾5 小时前
Qt Widgets入门:项目模板解析与Hello World
开发语言·数据库·c++·qt·ui·qt6.3
码途行者7 小时前
网站的SQL 注入:从攻击原理到防御措施
开发语言·sql·php
利威尔xu7 小时前
Go map 底层崩溃:3 个 goroutine 并发写同一张 map,fatal error 崩掉整个服务
golang·源码·map·并发·后端开发
旖旎夜光7 小时前
【C++ 基础入门】C++ 多态(中):虚函数表、多态原理与动静绑定
开发语言·c++·笔记·学习
你看我名字7 小时前
产品参数昨天还对,今天已过期:数眼智能与大模型应用如何做资料版本校验
开发语言·架构
老秦包你会8 小时前
计算机网络第二课 ----Socket(套接字)编程预备
开发语言·计算机网络·php
旖旎夜光8 小时前
【C++ 基础入门】C++多态(下):单/多继承虚表、多态补充与 21 道高频题
开发语言·c++·笔记·学习
Wang's Blog17 小时前
Java 项目实战: 交友项目 - FastDFS:入门案例
java·开发语言·交友