AzurLaneAutoScript icon indicating copy to clipboard operation
AzurLaneAutoScript copied to clipboard

Opt: Add full winapi support.

Open PPPlatelet opened this issue 1 year ago • 4 comments

  • [x] TODO:Send messagebox

PPPlatelet avatar Jun 27 '24 16:06 PPPlatelet

ready for review. @LmeSzinc

PPPlatelet avatar Aug 16 '24 15:08 PPPlatelet

  1. 需要解决这个问题,需要讨论两种方案

目前 EmulatorNotRunningError 是在 Device 类初始化时处理,在调度器内处理意味着启动模拟器是作为一个调度器任务去运行。你需要决定是作为设备模块的内部异常去处理,还是作为调度器的任务去处理,不能到处塞 workaround https://github.com/LmeSzinc/AzurLaneAutoScript/pull/3867#discussion_r1638776753

  1. 减少设置数量,仅为 WhenTaskQueueEmpty 增加关闭模拟器的选项,模拟器启动就是静默启动,不需要设置
  2. 仅添加实现 无任务时关闭模拟器 和 静默启动模拟器 的代码,无关代码不要全部复制粘贴进来

确定方向再开始写代码

LmeSzinc avatar Aug 16 '24 17:08 LmeSzinc

Send notify是指windows通知吗?如果是不妨试试win11toast库?

antecanis8 avatar Sep 28 '24 19:09 antecanis8

  1. 需要解决这个问题,需要讨论两种方案

目前 EmulatorNotRunningError 是在 Device 类初始化时处理,在调度器内处理意味着启动模拟器是作为一个调度器任务去运行。你需要决定是作为设备模块的内部异常去处理,还是作为调度器的任务去处理,不能到处塞 workaround https://github.com/LmeSzinc/AzurLaneAutoScript/pull/3867#discussion_r1638776753

  1. 减少设置数量,仅为 WhenTaskQueueEmpty 增加关闭模拟器的选项,模拟器启动就是静默启动,不需要设置
  2. 仅添加实现 无任务时关闭模拟器 和 静默启动模拟器 的代码,无关代码不要全部复制粘贴进来

确定方向再开始写代码

  1. 目前正在实现中,初步的计划是在run loop捕获异常时检查,但尚不清楚模拟器因任何可能的原因崩溃,run loop会捕获到什么异常。有必要将builtins的Exception和Alas自定义的Exception严格区分,所有自定义的异常应当继承自一个AlasBaseException。
  2. 可以接受删除BufferMethod,应当保留ProcessBufferTime,过于频繁的启停只会引起不必要的负担;静默启动应当由用户自行决定,有些用户更喜欢视奸(,有些更喜欢偶尔看一眼运行情况,有些用户更喜欢完全无感运行。
  3. 目前这一次推送并非最终版本,多数代码需要进一步测试,烦请暂时保留。
  4. TODO条目目前还在开发中(新建文件夹),难度较大需要摇人
  1. #4270
  2. 保留意见,若确定要删除BufferMethod则会在BufferTime内使用close_game
  3. 测试代码已经删除,TODO条目已开发完成,感谢@antecanis8 的推荐,send notify可以通过导入win11toast来实现,这是一个功能齐全的发送通知的库,唯一的缺点是只能用于Windows10、11;由于可以点击通知跳转第三方链接,有被merge恶意代码的风险,推荐的做法是增加一个抽象层

PPPlatelet avatar Oct 09 '24 04:10 PPPlatelet