界面版

利用python的wx库写个ui界面,用来把android设备的截图输出到电脑屏幕,前提需要安装adb,涉及到的python库也要安装。代码如下:

import wx,subprocess,os,platform

class AutyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, 'Android Auty', size=(350, 300))
self.panel = wx.Panel(self, -1)
#Android devices combox.
combox_list = []
r = execute_shell("adb devices")
for i in range(1,len(r)-1):
if r[i].startswith("*") and r[i].endswith("*"):
pass
else:
combox_list.append(r[i].split("\t")[0])
wx.StaticText(self.panel, -1, "Select devices:", (15, 15))
self.devices_combobox = wx.ComboBox(self.panel, -1, r[1].split("\t")[0], (15, 35), wx.DefaultSize, combox_list, wx.CB_DROPDOWN)
#Capture button.
self.capture_button = wx.Button(self.panel, -1, "capture", pos=(188, 35), size=(66,25))
self.reload_button = wx.Button(self.panel, -1, "reload", pos=(258, 35), size=(66,25))
self.Bind(wx.EVT_BUTTON, self.captureClick, self.capture_button)
self.Bind(wx.EVT_BUTTON, self.reloadClick, self.reload_button)
self.capture_button.SetDefault()
self.reload_button.SetDefault()
def captureClick(self, event):
capture_android(self.devices_combobox.GetValue())
if("Windows" in platform.platform()):
os.startfile("d:\\screenshot.png")
def reloadClick(self, event):
self.devices_combobox.Clear()
k = execute_shell("adb devices")
for i in range(1,len(k)-1):
self.devices_combobox.Append(k[i].split("\t")[0])
self.devices_combobox.SetValue(k[1].split("\t")[0]) def execute_shell(shell):
p = subprocess.Popen(shell,shell=True,stdout=subprocess.PIPE)
out = p.stdout.readlines()
return out def capture_android(device_id):
sh1 = "adb -s "+device_id+" shell /system/bin/screencap -p /sdcard/screenshot.png"
sh2 = "adb -s "+device_id+" pull /sdcard/screenshot.png d:/screenshot.png"
execute_shell(sh1)
execute_shell(sh2) if __name__ == '__main__':
app = wx.PySimpleApp()
AutyFrame().Show()
app.MainLoop()

运行截图:

优点:

1. 比uiautomatorviewer运行速度快,比monitor更快;

2. 可以针对多个设备,选择性进行截屏;

3. 截屏以后截图(保存在D盘根目录下“screenshot.png”文件)会自动打开;

4. 插拔设备后可以reload重新加载设备列表。

命令行版

如果不想安装wx库,提供一个命令行版的安卓截屏python脚本(capture_android.py):

import sys,os,platform
from execute_shell import execute_shell def capture_android(device_id):
sh1 = "adb -s "+device_id+" shell /system/bin/screencap -p /sdcard/screenshot.png"
sh2 = "adb -s "+device_id+" pull /sdcard/screenshot.png d:/screenshot.png"
execute_shell(sh1)
execute_shell(sh2) if __name__ == '__main__':
if len(sys.argv) == 2:
device_id = sys.argv[1]
capture_android(sys.argv[1])
if("Windows" in platform.platform()):
os.startfile("d:\\screenshot.png")

引用的execute_shell.py内容如下(把引用的文件放在同级目录下就行):

import subprocess

def execute_shell(shell):
p = subprocess.Popen(shell,shell=True,stdout=subprocess.PIPE)
out = p.stdout.readlines()
return out

使用方法(python 脚本路径 device_id参数):

截屏后图片会自动打开。

Python写一个Windows下的android设备截图工具的更多相关文章

  1. python Windows下的android设备截图工具

    目录 界面版 命令行版 界面版 利用python的wx库写个ui界面,用来把android设备的截图输出到电脑屏幕,前提需要安装adb,涉及到的python库也要安装.代码如下: #!/usr/bin ...

  2. 用Python写一个向数据库填充数据的小工具

    一. 背景 公司又要做一个新项目,是一个合作型项目,我们公司出web展示服务,合作伙伴线下提供展示数据. 而且本次项目是数据统计展示为主要功能,并没有研发对应的数据接入接口,所有展示数据源均来自数据库 ...

  3. [转]phoneGap3.0安装步骤(以windows下的android环境为例):

    phoneGap3.0安装步骤(以windows下的android环境为例): 环境: WIN系统,JDK,Android,Eclipse,Ant,Git,PhoneGap3.x (Cordova) ...

  4. 【Python】如何基于Python写一个TCP反向连接后门

    首发安全客 如何基于Python写一个TCP反向连接后门 https://www.anquanke.com/post/id/92401 0x0 介绍 在Linux系统做未授权测试,我们须准备一个安全的 ...

  5. 十行代码--用python写一个USB病毒 (知乎 DeepWeaver)

    昨天在上厕所的时候突发奇想,当你把usb插进去的时候,能不能自动执行usb上的程序.查了一下,发现只有windows上可以,具体的大家也可以搜索(搜索关键词usb autorun)到.但是,如果我想, ...

  6. python写一个能变身电光耗子的贪吃蛇

    python写一个不同的贪吃蛇 写这篇文章是因为最近课太多,没有精力去挖洞,记录一下学习中的收获,python那么好玩就写一个大一没有完成的贪吃蛇(主要还是跟课程有关o(╥﹏╥)o,课太多好烦) 第一 ...

  7. 一个windows下的ddos样本

    一个windows下的ddos样本. 加载器 程序运行之后会在临时目录释放出一个256_res.tmp的文件 之后将该文件移动至system32目录下,以rasmedia.dll命名. 删除原文件. ...

  8. 用Python写一个简单的Web框架

    一.概述 二.从demo_app开始 三.WSGI中的application 四.区分URL 五.重构 1.正则匹配URL 2.DRY 3.抽象出框架 六.参考 一.概述 在Python中,WSGI( ...

  9. Windows下修改Android手机的hosts

    Windows下修改Android手机的hosts 1.首先,手机是Root过的. 2.连接手机和电脑, adb shell 进入命令行. 3.获取root用户权限: su -root 4.不知道为何 ...

随机推荐

  1. php 获取中文长度 截取中文字符串

    #获取中文长度mb_strlen($str,$encoding); #截取中文字符串 mb_substr(str,start,length,encoding);

  2. Spark部署三种方式介绍:YARN模式、Standalone模式、HA模式

    参考自:Spark部署三种方式介绍:YARN模式.Standalone模式.HA模式http://www.aboutyun.com/forum.php?mod=viewthread&tid=7 ...

  3. 修改XCode的Product的输出目录(有时不生效需看)

    通常在情一般都不建议使用绝对路径,因为写死之后,换环境,换平台,又要重新修改路径,因此常常使用相对路径,哪么相对路径通常使用的就是环境变量了. 在Mac 中,xcode 中build settings ...

  4. Hyper-V 2012 R2 故障转移群集

    和终端用户相比,企业用户对于业务的连续性和可靠性更为在意.相对而言,企业一般不会将追逐单一硬件的性能排在第一位. 如何衡量业务是否持续可用,一般使用"x 个 9"这种方式来定义.如 ...

  5. SpringMVC常用配置-配置DispatcherServlet映射请求路径的方式

  6. python中使用正则表达式

    正则表达式元字符:. ^ $ * + ? {} [] \ | ()第一部分:1.[] 常用来指定一个字符集,用于匹配其中的一个字符:^,$元字符在里面不起作用,但是+-*等符号在[]中还是有特殊含义的 ...

  7. LoadRunner连接Genymotion

  8. FORTRAN 90标准函数(一) (转)

    符号约定: l  I代表整型;R代表实型;C代表复型;CH代表字符型;S代表字符串;L代表逻辑型;A代表数组;P代表指针;T代表派生类型;AT为任意类型. l  s:P表示s类型为P类型(任意kind ...

  9. opencv,图片遍历

    //肤色提取,skinArea为二值化肤色图像 void skinExtract(const Mat &frame, Mat &skinArea) { Mat YCbCr; vecto ...

  10. UEFI引导在GPT分区下安装win2008——抓住那只傲娇的win2008

    上周遇到个客户DELL R520的服务器新采购了8块3T硬盘做备份服务器,raid配置5+1,一个磁21.8T.先用普通的装desktop OS的方法发现进去没raid盘,然后就按照官方的文档进入Li ...