main.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import subprocess
  2. import asyncio
  3. from time import sleep
  4. from pymobiledevice3.lockdown import create_using_usbmux
  5. from pymobiledevice3.services.dvt.instruments.process_control import ProcessControl
  6. from pymobiledevice3.services.installation_proxy import InstallationProxyService
  7. from pymobiledevice3.services.dvt.dvt_secure_socket_proxy import DvtSecureSocketProxyService
  8. from pymobiledevice3.services.remote_fetch_symbols import RemoteService
  9. from pymobiledevice3.remote.remote_service_discovery import RemoteServiceDiscoveryService
  10. import threading
  11. BUNDLE_ID = 'com.laiwang.DingTalk'
  12. PCPWD = 'd123456'
  13. async def main():
  14. try:
  15. # 初始化管道服务
  16. remoteService = RemoteService(RemoteServiceDiscoveryService(('127.0.0.1',7777)),'test')
  17. await remoteService.connect()
  18. # 使用命令方式启动管道
  19. # try:
  20. # # 使用 -S 参数让 sudo 从 stdin 读取密码
  21. # result = subprocess.run(
  22. # ["sudo", "-S"] + PCPWD.split(),
  23. # input="d123456\n", # 实际应用中应从安全来源获取
  24. # text=True,
  25. # capture_output=True,
  26. # check=True
  27. # )
  28. # print("命令执行成功!")
  29. # print("输出:", result.stdout)
  30. # except subprocess.CalledProcessError as e:
  31. # print(f"命令执行失败 (退出码: {e.returncode}):")
  32. # print("错误输出:", e.stderr)
  33. # sleep(3)
  34. # # 连接手机
  35. # lockdown = create_using_usbmux()
  36. # print("开发者模式",lockdown.developer_mode_status)
  37. # # 获取钉钉-app
  38. # with InstallationProxyService(lockdown) as installer:
  39. # # 查找特定应用
  40. # ddApp = [app for app in installer.get_apps() if 'DingTalk' in app]
  41. # if len(ddApp):
  42. # print("找到包",ddApp[0])
  43. # if ddApp[0] == BUNDLE_ID:
  44. # # 打开app
  45. # with DvtSecureSocketProxyService(lockdown) as dvt:
  46. # process_control = ProcessControl(dvt)
  47. # pid = process_control.launch(BUNDLE_ID)
  48. # print("启动app",pid)
  49. # else:
  50. # print("包名不匹配")
  51. # else:
  52. # print("没找到包,请安装钉钉")
  53. except ConnectionError as e:
  54. print(f"连接失败")
  55. if __name__ == '__main__':
  56. asyncio.run(main())