我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python实现adb辅助点击屏幕工具

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python实现adb辅助点击屏幕工具

#!/usr/bin/env python# -*- coding: utf-8 -*-import reimport osimport timeimport subprocessimport tkinter as tkfrom tkinter import messageboxfrom PIL import Image, ImageTk# 设置ADB路径(根据你的系统和安装路径进行调整)ADB_PATH = 'C:/Users/DHY-20210315/AppData/Local/Android/Sdk/platform-tools/adb.exe'# 设置截屏图片显示比例scl = 0.7# 创建一个GUI窗口root = tk.Tk()root.title("ADB辅助点击助手")screen_width = root.winfo_screenwidth()screen_height = root.winfo_screenheight()# 设置窗口大小window_width = 900window_height = 600x = (screen_width - window_width) // 2y = (screen_height - window_height) // 2root.geometry(f"{window_width}x{window_height}+{x}+{y}")# 函数:通过ADB截屏并显示def capture_and_display():    if r_var.get() == '':        messagebox.showinfo(title='提示', message='没有连接设备呀!')        return    # file = str(round(time.time() * 1000)) + '.png'    file = 'screencap.png'    scp = '/sdcard/Pictures/' + file    capture_process = subprocess.Popen([ADB_PATH, '-s', r_var.get(), 'shell', 'screencap', scp])    capture_process.wait()    lsc = './' + file    pull_process = subprocess.Popen([ADB_PATH, '-s', r_var.get(), 'pull', scp, lsc])    pull_process.wait()    screenshot = Image.open(lsc)    width, height = screenshot.size    new_width = int(width * scl)    new_height = int(height * scl)    screenshot = screenshot.resize((new_width, new_height), Image.ANTIALIAS)    s_w = new_width + 20    s_h = new_height + 50    root.geometry(f"{s_w}x{s_h}+{(screen_width - s_w) // 2}+{(screen_height - s_h) // 2}")    img = ImageTk.PhotoImage(screenshot)    img_label.config(image=img)    img_label.image = img# 函数:通过ADB点击图片def click_img(event):    if r_var.get() == '':        messagebox.showinfo(title='提示', message='没有连接设备呀!')        return    if ck_var.get() == 1:        for i in range(8):            subprocess.Popen(                [ADB_PATH, '-s', r_var.get(), 'shell', 'input', 'tap', str(event.x / scl), str(event.y / scl)])            time.sleep(0.01)        ck_var.set(0)    else:        subprocess.Popen([ADB_PATH, '-s', r_var.get(), 'shell', 'input', 'tap', str(event.x / scl), str(event.y / scl)])    time.sleep(1)    capture_and_display()# 函数:通过ADB发送按键def send_back_command():    if r_var.get() == '':        messagebox.showinfo(title='提示', message='没有连接设备呀!')        return    subprocess.Popen([ADB_PATH, '-s', r_var.get(), 'shell', 'input', 'keyevent', '4'])    time.sleep(1)    capture_and_display()# 函数:通过ADB发送滑动def send_slide_command(arg):    if r_var.get() == '':        messagebox.showinfo(title='提示', message='没有连接设备呀!')        return    if arg == 1:        subprocess.Popen([ADB_PATH, '-s', r_var.get(), 'shell', 'input', 'swipe', '969 1050 969 800 100'])        time.sleep(1)        capture_and_display()    else:        subprocess.Popen([ADB_PATH, '-s', r_var.get(), 'shell', 'input', 'swipe', '969 800 969 1050 100'])        time.sleep(1)        capture_and_display()# 函数:通过ADB获取设备名def find_device():    dvs = os.popen("adb devices").readlines()    dfs = ''    for ss in dvs:        ss = ss.strip('\n')        if 'List of devices' not in ss and len(ss) > 6 and 'offline' not in ss:            dv = ss.split('\t')[0]            p = subprocess.Popen("adb -s %s shell getprop ro.product.model" % dv, stdout=subprocess.PIPE)            result = p.communicate()            dn = result[0].decode('utf-8').strip()            cold_bev = tk.Radiobutton(button_frame, text=dn, variable=r_var, value=dv)            cold_bev.pack(side="left")            if dfs == '':                dfs = dv    if dfs != '':        r_var.set(dfs)def find_ip(input_string):    ip_pattern = r'\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b'    ip_addresses = re.findall(ip_pattern, input_string)    return ip_addresses[0]# 函数:通过ADB wifi连接设备def wifi_connect():    if r_var.get() == '':        messagebox.showinfo(title='提示', message='没有连接设备呀!')        return    dv = r_var.get()    if r_var.get().startswith('192.168.'):        messagebox.showinfo(title='提示', message='已经是WiFi连接了啊!')        return    p = subprocess.Popen("adb -s %s shell ip -f inet addr show wlan0" % dv, stdout=subprocess.PIPE)    result = p.communicate()    dn = result[0].decode('utf-8').strip()    ip = find_ip(dn)    subprocess.Popen([ADB_PATH, 'connect', ip])button_frame = tk.Frame(root)button_frame.pack()capture_button = tk.Button(button_frame, text="截屏", command=capture_and_display)capture_button.pack(side="left")tk.Label(button_frame, text="   ").pack(side="left")back_button = tk.Button(button_frame, text="后退", command=send_back_command)back_button.pack(side="left")tk.Label(button_frame, text="   ").pack(side="left")up_button = tk.Button(button_frame, text="上滑", command=lambda: send_slide_command(1))up_button.pack(side="left")tk.Label(button_frame, text="   ").pack(side="left")down_button = tk.Button(button_frame, text="下滑", command=lambda: send_slide_command(0))down_button.pack(side="left")tk.Label(button_frame, text="   ").pack(side="left")ck_var = tk.IntVar()c1 = tk.Checkbutton(button_frame, text='8连击', variable=ck_var, onvalue=1, offvalue=0)c1.pack(side="left")tk.Label(button_frame, text="   ").pack(side="left")r_var = tk.StringVar(value='')find_device()img_label = tk.Label(root)img_label.pack()img_label.bind('', click_img)wifi_button = tk.Button(button_frame, text="WiFi连接", command=wifi_connect)wifi_button.pack(side="left")root.mainloop()

来源地址:https://blog.csdn.net/qq1053781225/article/details/132763435

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python实现adb辅助点击屏幕工具

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

[python小工具]实现屏幕录制

用python实现屏幕录制PIL 即pollow 的安装命令如下:pip install pillow其中cv2的安装是下面这条命令pip install opencv-python#python + opencv 实现屏幕录制from P
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录