| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- import subprocess
- import asyncio
- from time import sleep
- from pymobiledevice3.lockdown import create_using_usbmux
- from pymobiledevice3.services.dvt.instruments.process_control import ProcessControl
- from pymobiledevice3.services.installation_proxy import InstallationProxyService
- from pymobiledevice3.services.dvt.dvt_secure_socket_proxy import DvtSecureSocketProxyService
- from pymobiledevice3.services.remote_fetch_symbols import RemoteService
- from pymobiledevice3.remote.remote_service_discovery import RemoteServiceDiscoveryService
- import threading
- BUNDLE_ID = 'com.laiwang.DingTalk'
- PCPWD = 'd123456'
- async def main():
- try:
- # 初始化管道服务
- remoteService = RemoteService(RemoteServiceDiscoveryService(('127.0.0.1',7777)),'test')
- await remoteService.connect()
- # 使用命令方式启动管道
- # try:
- # # 使用 -S 参数让 sudo 从 stdin 读取密码
- # result = subprocess.run(
- # ["sudo", "-S"] + PCPWD.split(),
- # input="d123456\n", # 实际应用中应从安全来源获取
- # text=True,
- # capture_output=True,
- # check=True
- # )
- # print("命令执行成功!")
- # print("输出:", result.stdout)
- # except subprocess.CalledProcessError as e:
- # print(f"命令执行失败 (退出码: {e.returncode}):")
- # print("错误输出:", e.stderr)
- # sleep(3)
- # # 连接手机
- # lockdown = create_using_usbmux()
- # print("开发者模式",lockdown.developer_mode_status)
- # # 获取钉钉-app
- # with InstallationProxyService(lockdown) as installer:
- # # 查找特定应用
- # ddApp = [app for app in installer.get_apps() if 'DingTalk' in app]
- # if len(ddApp):
- # print("找到包",ddApp[0])
- # if ddApp[0] == BUNDLE_ID:
- # # 打开app
- # with DvtSecureSocketProxyService(lockdown) as dvt:
- # process_control = ProcessControl(dvt)
- # pid = process_control.launch(BUNDLE_ID)
- # print("启动app",pid)
- # else:
- # print("包名不匹配")
- # else:
- # print("没找到包,请安装钉钉")
- except ConnectionError as e:
- print(f"连接失败")
- if __name__ == '__main__':
- asyncio.run(main())
|