LmeSzinc / AzurLaneAutoScript

Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研,全自动大世界
https://alas.azurlane.cloud
GNU General Public License v3.0
6.39k stars 759 forks source link

静默启动模拟器 #3940

Open PPPlatelet opened 1 week ago

PPPlatelet commented 1 week ago

解决方案

3934

增加的功能: 静默启动模拟器可选常规模式、最小化模式、静默模式 当任务队列清空后可关闭模拟器 若距离下个任务的时间小于 X 分钟, 则由关闭模拟器转为用户指定的其他方法,默认为停在原处

其他内容

api_windows.py中增加的方法:

  1. _enum_process()和_enum_thread():遍历进程/线程,调用__yieldloop
  2. getfocusedwindow()和setforegroundwindow():获取当前聚焦的窗口/重新聚焦窗口
  3. execute():创建进程并返回进程和当前聚焦的窗口,进程为元组,包含有内核进程对象,内核线程对象,进程pid,主线程id
  4. terminate_process():无条件结束进程
  5. get_hwnds():遍历窗口获取模拟器的窗口句柄
  6. get_cmdline():使用模拟器pid读取模拟器的cmdline
  7. get_thread_creation_time():根据tid读取线程创建的时间
  8. get_thread():根据pid获取主线程id
  9. get_process():遍历进程并用正则匹配获取模拟器的进程,调用_get_process()
  10. switch_window():根据窗口句柄过滤并切换窗口状态

winapi中增加的方法:

const_windows.py


structures_windows.py

  1. 设置了EmulatorLaunchFailedError,HwndNotFoundError,IterationFinished异常
  2. STARTUPINFOW():继承于ctypes.Structure,指定了窗口工作站、桌面、标准句柄和main窗口的外观,用于execute()
  3. PROCESS_INFORMATION():包含有关新创建的进程及其主线程的信息,用于execute()
  4. SECURITY_ATTRIBUTES():包含对象的安全描述符,并指定通过指定此结构检索的句柄是否可继承,用于CreateProcessW()
  5. PROCESSENTRY32()和THREADENTRY32():描述采用快照时驻留在系统地址空间中的进程的列表中的条目/描述获取快照时在系统中执行的线程列表中的条目,用于_enum_processes()/_enum_threads()
  6. WINDOWPLACEMENT():包含有关窗口在屏幕上的位置的信息,用于getfocusedwindow()
  7. LIST_ENTRY():描述双向链表中的条目,或用作此类列表的标题,用于PEB_LDR_DATA()
  8. UNICODE_STRING():用于传递Unicode字符串,用于RTL_USER_PROCESS_PARAMETERS(),CURDIR(),RTL_DRIVE_LETTER_CURDIR()
  9. PEB_LDR_DATA():包含有关为进程加载的模块的信息,用于PEB()
  10. PEB():包含进程信息,用于get_cmdline()和PROCESS_BASIC_INFORMATION()
  11. CURDIR():包含进程当前目录的信息,用于RTL_USER_PROCESS_PARAMETERS()
  12. RTL_DRIVE_LETTER_CURDIR():包含每个驱动器号的当前目录信息,用于RTL_USER_PROCESS_PARAMETERS()
  13. RTL_USER_PROCESS_PARAMETERS():包含进程参数信息,用于get_cmdline()
  14. PROCESS_BASIC_INFORMATION():包含进程基本信息,用于get_cmdline()
  15. FILETIME():包含一个 64 位值,表示自 1601 年 1 月 1 日 (UTC) 以来的 100 纳秒间隔数,用于_get_thread_creation_time()和GetThreadTimes

functions.py


platform_windows.py


device.py


alas.py