赞
踩
- from concurrent.futures import thread
- import winreg, os ,time # 雷电模拟器自动获取目录使用
- import random
- #----------------------------------------------------------------
- def get_ldconsole(pro_name):
- def get_ld_dir():
- try:
- key = winreg.OpenKeyEx(winreg.HKEY_CURRENT_USER, "Software\ChangZhi2\dnplayer")
- v = winreg.QueryValueEx(key, "InstallDir")
- winreg.CloseKey(key)
- return v[0]
- except Exception as e:
- print(e)
- return "没有找到模拟器路径"
- return os.path.join(get_ld_dir(), pro_name)
- console1 = get_ldconsole("ldconsole.exe")
- console = console1.replace('\\','\\\\')
- ld1 = get_ldconsole("ld.exe")
- ld = ld1.replace('\\','\\\\')
- #----------------------------------------------------------------
-
- class Dnconsole:
- # 模拟器信息配置
- # ldpath = 'D:\\ChangZhi\\dnplayer2\\'
- # console = 'D:\\ChangZhi\\dnplayer2\\ldconsole.exe'
- # ld = 'D:\\ChangZhi\\dnplayer2\\ld.exe'
-
- #获取模拟器列表 修复完成
- @staticmethod
- def get_list():
- cmd = os.popen('{} list2'.format(console))
- text = cmd.read()
- cmd.close()
- info = text.split('\n')
- result = list()
- for line in info:
- if len(line) > 1:
- dnplayer = line.split(',')
- result.append(dnplayer)
- return result
- #获取正在运行的模拟器列表 修复完成 返回模拟器列表信息
- @staticmethod
- def list_running() -> list:
- result = list()
- all = Dnconsole.get_list()
- for dn in all:
- if dn[2] != '0':
- result.append(dn)
- return result
- #检测指定序号的模拟器是否正在运行 修复完成 返回模拟器信息
- @staticmethod
- def is_running(index: int) -> bool:
- all = Dnconsole.list_running()
- for i in all:
- if index == int(i[0]):
- return i
- else: return '检查【{}】号模拟器是否在运行'.format(index)
-
- #执行shell命令 ld控制adb 控制模拟器本身ldconsole从中模拟器游戏动作
- @staticmethod
- def dnld(index: int, command: str, silence: bool = True):
- cmd = ld + ' -s {} {}'.format(index, command)
- if silence:
- os.system(cmd)
- return ''
- process = os.popen(cmd)
- result = process.read()
- process.close()
- return result
-
-
- #启动App 指定模拟器必须已经启动
- @staticmethod #参数:(模拟器号,点击x,y,点击时间 毫秒)
- def run_app(index: int, x: int, y: int, delay: int = 0):
- Dnconsole.touch(index, x, y, delay) #点两次,防止漏启动的
- Dnconsole.touch(index, x, y, delay)
-
- #输入文字
- @staticmethod # 已修复
- def input_text(index: int, text: str):
- process = os.popen('{} action --index {} --key call.input --value {}'.format(console, index, text))
- result = process.read()
- process.close()
- return result
-
-
- #启动模拟器
- @staticmethod
- def launch(index: int, launchtime):
- if launchtime > 4:
- os.system("start explorer LD_launch\\LD_launch{}.bat".format(index))
- time.sleep(launchtime)
-
-
- #关闭模拟器
- @staticmethod
- def quit(index: int):
- cmd = '{} quit --index {}'.format(console, str(index))
- process = os.popen(cmd)
- result = process.read()
- process.close()
- return result
-
-
- #点击或者长按某点,延时不传数据默认0,设置时间长按
- @staticmethod
- def image_DIY_xy(index: int, DIY_click, delay: int = 0):
- l_x = DIY_click[0] #目标图的左上角坐标x
- l_y = DIY_click[1] #左上角坐标y
- max_x = DIY_click[2] #点击范围右下角x
- max_y = DIY_click[3] # 点击区域右下角y
- x_click = random.randint(l_x , max_x) #y轴随机数
- y_click = random.randint(l_y , max_y) #y轴随机数
- if delay == 0:
- Dnconsole.dnld(index, 'input tap {} {}'.format(x_click, y_click))
- else:
- Dnconsole.dnld(index, 'input swipe {} {} {} {} {}'.format(x_click, y_click,x_click, y_click, delay)) # touch失效
- #滑动
- @staticmethod
- def move_finger(index, start_x, start_y, end_x, end_y, time_min,time_max, delay: int = 0):
- click_time = random.randint(time_min, time_max) #随机点击时间随机 100到300毫秒
- if delay == 1:
- Dnconsole.dnld(index, 'input swipe {} {} {} {}'.format(x0, y0, x1, y1))
- else:
- Dnconsole.dnld(index, 'input swipe {} {} {} {} {}'.format(x0, y0, x1, y1, click_time))
-
-
-
-
-
- # if __name__ == '__main__':
- # Dnconsole.launch(0)# 打开模拟器
- # time.sleep(10)# 等待启动
- # #: 其他的控制(touch)
- # Dnconsole.quit(0)# 退出模拟器
- #--------获取正在运行的模拟器标题名称
- # runlist = Dnconsole.get_list()
- # for i in runlist:
- # if i[2] != '0':
- # print(i[1])
- # # #----------------------------------
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。