python引入op插件实现后台挂机
写在前面:不要违法操作哦
准备工具
需要用到的环境为 python3.74
python3.74传送门代码编写环境 pycharm
pycharm传送门安装python win32的扩展,
win32扩展传送门op插件(类似于大漠插件)
op 0.39传送门实验用到的雷神模拟器
模拟器传送门老工具人阴阳师
这个自己在模拟器内部下载
安装自己随意
op模块用win32模块来打开引用
from win32com.client import Dispatchclass Demo:def __init__(self):# 创建com对象self.op = op = Dispatch("op.opsoft.1");self.hwnd = 0;self.send_hwnd = 0;op.SetPath("C:\\Users\\Administrator\\Desktop\\houtai\\image\\");#全局资源的位置
创建一个方法输出op版本号
def test_qidong(self):# 输出插件版本号print("版本号", self.op.Ver());
输出成功则会显示相应的版本号,在op文档中可以查询相关的报错信息。
雷电模拟器的绑定子窗体的方法
def test_bkmode(self):#绑定self.hwnd = self.op.FindWindowByProcess("dnplayer.exe","LDPlayerMainFrame","雷电模拟器") ;print(self.hwnd);time.sleep(0)hwnd = self.op.FindWindowEx(self.hwnd, "RenderWindow", "TheRender");print("找到子窗体", hwnd);# time.sleep(0.1);r = self.op.BindWindow(hwnd, "opengl", "windows", "windows", 1);# opengl 后台模式 normal 前台模式;if r == 0:print("绑定失败");else:print("绑定成功,,,,");time.sleep(0);
创建一个简单的移动窗口到固定位置的方法,并修改窗体的大小。
def test_windos(self):op_ret = self.op.GetWindowRect(self.hwnd)print(op_ret); #显示窗口初始大小self.op.SetClientSize(self.hwnd,864,497);print("窗口设置为x=867,y=467")self.op.MoveWindow(self.hwnd, 10, 10);print("窗口移动成功10,10");self.op.SetWindowTransparent(self.hwnd,255); #0是隐藏窗口不占位置,完全透明#透明度设置print("设置透明度成功");
在脚本运行完后需要释放绑定方法。
def test_end(self):op_ret = self.op.UnBindWindow();# 退出进程return op_ret;
这是一个用于测试的截图方法验证是否可以后台截图。
def test_jietu(self):op = self.op.Capture(1, 1, 864, 491, "screen.bmp")if op == 1:print("方法调用成功");else:print("截图失败");
测试后台鼠标调用是否正常的方法
def test_dianji(self):ret1 = self.op.MoveTo(29, 46);ret2 = self.op.LeftClick();if ret1==0&ret2==0:print("失败");else:print("成功!");
代码的调用解释
def test_all():demo = Demo();#初始化# demo.test_qidong()#打开雷电的方法demo.test_bkmode()#绑定窗体demo.test_windos()#移动窗体demo.test_jietu()#截图time.sleep(1)#等待1秒demo.test_dianji()#测试点击demo.test_end()#释放函数print("成功结束")return 0;test_all();
这些都成功了那么op插件就完成了绑定,并且完成了一次后台运行的小测试,后续就可以使用它啦,
这里放置完整代码
from win32com.client import Dispatchimport timeimport randomclass Demo:def __init__(self):# 创建com对象self.op = op = Dispatch("op.opsoft.1");self.hwnd = 0;self.send_hwnd = 0;op.SetPath("C:\\Users\\Administrator\\Desktop\\houtai\\image\\");#全局资源的位置def test_qidong(self):# 输出插件版本号print("版本号", self.op.Ver());a = self.op.WinExec("F:\\leidian\\LDPlayer4\\dnplayer.exe", 1);print("打开",a);def test_bkmode(self):#绑定self.hwnd = self.op.FindWindowByProcess("dnplayer.exe","LDPlayerMainFrame","雷电模拟器") ;print(self.hwnd);time.sleep(0)hwnd = self.op.FindWindowEx(self.hwnd, "RenderWindow", "TheRender");print("找到子窗体", hwnd);# time.sleep(0.1);r = self.op.BindWindow(hwnd, "opengl", "windows", "windows", 1);# opengl 后台模式 normal 前台模式;if r == 0:print("绑定失败");else:print("绑定成功,,,,");time.sleep(0);def test_windos(self):op_ret = self.op.GetWindowRect(self.hwnd)print(op_ret);self.op.SetClientSize(self.hwnd,864,497);print("窗口设置为x=867,y=467")self.op.MoveWindow(self.hwnd, 10, 10);print("窗口移动成功10,10");self.op.SetWindowTransparent(self.hwnd,255); #0是隐藏窗口不占位置,完全透明#透明度设置print("设置透明度成功");def test_end(self):op_ret = self.op.UnBindWindow();# 退出进程return op_ret;def test_jietu(self):op = self.op.Capture(1, 1, 864, 491, "screen.bmp")if op == 1:print("方法调用成功");else:print("截图失败");def test_dianji(self):ret1 = self.op.MoveTo(29, 46);ret2 = self.op.LeftClick();if ret1==0&ret2==0:print("失败");else:print("成功!");def test_all():demo = Demo();#初始化# demo.test_qidong()#打开雷电的方法demo.test_bkmode()#绑定窗体demo.test_windos()#移动窗体demo.test_jietu()#截图time.sleep(1)#等待1秒demo.test_dianji()#测试点击demo.test_end()#释放函数print("成功结束")return 0;test_all();
本人萌新一枚,大佬不要捶我,后期会写一个后台运行的yys脚本,欢迎来 282993419 摸鱼。
如果觉得《python引入op模块 实现游戏后台挂机 阴阳师》对你有帮助,请点赞、收藏,并留下你的观点哦!