ok-script 0.0.152__tar.gz → 0.0.154__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. {ok-script-0.0.152/ok_script.egg-info → ok-script-0.0.154}/PKG-INFO +1 -1
  2. {ok-script-0.0.152 → ok-script-0.0.154}/ok/capture/HwndWindow.py +23 -14
  3. {ok-script-0.0.152 → ok-script-0.0.154}/ok/capture/adb/DeviceManager.py +7 -3
  4. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/StartController.py +11 -10
  5. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/resources.py +296 -286
  6. {ok-script-0.0.152 → ok-script-0.0.154/ok_script.egg-info}/PKG-INFO +1 -1
  7. {ok-script-0.0.152 → ok-script-0.0.154}/setup.py +1 -1
  8. {ok-script-0.0.152 → ok-script-0.0.154}/LICENSE.txt +0 -0
  9. {ok-script-0.0.152 → ok-script-0.0.154}/README.md +0 -0
  10. {ok-script-0.0.152 → ok-script-0.0.154}/ok/OK.py +0 -0
  11. {ok-script-0.0.152 → ok-script-0.0.154}/ok/__init__.py +0 -0
  12. {ok-script-0.0.152 → ok-script-0.0.154}/ok/alas/__init__.py +0 -0
  13. {ok-script-0.0.152 → ok-script-0.0.154}/ok/alas/emulator_base.py +0 -0
  14. {ok-script-0.0.152 → ok-script-0.0.154}/ok/alas/emulator_windows.py +0 -0
  15. {ok-script-0.0.152 → ok-script-0.0.154}/ok/alas/platform_base.py +0 -0
  16. {ok-script-0.0.152 → ok-script-0.0.154}/ok/alas/platform_windows.py +0 -0
  17. {ok-script-0.0.152 → ok-script-0.0.154}/ok/alas/utils.py +0 -0
  18. {ok-script-0.0.152 → ok-script-0.0.154}/ok/capture/BaseCaptureMethod.py +0 -0
  19. {ok-script-0.0.152 → ok-script-0.0.154}/ok/capture/__init__.py +0 -0
  20. {ok-script-0.0.152 → ok-script-0.0.154}/ok/capture/adb/ADBCaptureMethod.py +0 -0
  21. {ok-script-0.0.152 → ok-script-0.0.154}/ok/capture/adb/WindowsCaptureFactory.py +0 -0
  22. {ok-script-0.0.152 → ok-script-0.0.154}/ok/capture/adb/__init__.py +0 -0
  23. {ok-script-0.0.152 → ok-script-0.0.154}/ok/capture/adb/bin/__init__.py +0 -0
  24. {ok-script-0.0.152 → ok-script-0.0.154}/ok/capture/image/ImageCaptureMethod.py +0 -0
  25. {ok-script-0.0.152 → ok-script-0.0.154}/ok/capture/image/__init__.py +0 -0
  26. {ok-script-0.0.152 → ok-script-0.0.154}/ok/capture/windows/BaseWindowsCaptureMethod.py +0 -0
  27. {ok-script-0.0.152 → ok-script-0.0.154}/ok/capture/windows/BitBltCaptureMethod.py +0 -0
  28. {ok-script-0.0.152 → ok-script-0.0.154}/ok/capture/windows/DesktopDuplicationCaptureMethod.py +0 -0
  29. {ok-script-0.0.152 → ok-script-0.0.154}/ok/capture/windows/WindowsGraphicsCaptureMethod.py +0 -0
  30. {ok-script-0.0.152 → ok-script-0.0.154}/ok/capture/windows/__init__.py +0 -0
  31. {ok-script-0.0.152 → ok-script-0.0.154}/ok/capture/windows/d3d11.py +0 -0
  32. {ok-script-0.0.152 → ok-script-0.0.154}/ok/capture/windows/dump.py +0 -0
  33. {ok-script-0.0.152 → ok-script-0.0.154}/ok/capture/windows/utils.py +0 -0
  34. {ok-script-0.0.152 → ok-script-0.0.154}/ok/capture/windows/window.py +0 -0
  35. {ok-script-0.0.152 → ok-script-0.0.154}/ok/color/Color.py +0 -0
  36. {ok-script-0.0.152 → ok-script-0.0.154}/ok/color/__init__.py +0 -0
  37. {ok-script-0.0.152 → ok-script-0.0.154}/ok/config/Config.py +0 -0
  38. {ok-script-0.0.152 → ok-script-0.0.154}/ok/config/ConfigOption.py +0 -0
  39. {ok-script-0.0.152 → ok-script-0.0.154}/ok/config/GlobalConfig.py +0 -0
  40. {ok-script-0.0.152 → ok-script-0.0.154}/ok/config/InfoDict.py +0 -0
  41. {ok-script-0.0.152 → ok-script-0.0.154}/ok/config/__init__.py +0 -0
  42. {ok-script-0.0.152 → ok-script-0.0.154}/ok/display/__init__.py +0 -0
  43. {ok-script-0.0.152 → ok-script-0.0.154}/ok/display/custom_types.py +0 -0
  44. {ok-script-0.0.152 → ok-script-0.0.154}/ok/display/display.py +0 -0
  45. {ok-script-0.0.152 → ok-script-0.0.154}/ok/display/display_adapters.py +0 -0
  46. {ok-script-0.0.152 → ok-script-0.0.154}/ok/display/display_monitors.py +0 -0
  47. {ok-script-0.0.152 → ok-script-0.0.154}/ok/display/windows_types.py +0 -0
  48. {ok-script-0.0.152 → ok-script-0.0.154}/ok/feature/Box.py +0 -0
  49. {ok-script-0.0.152 → ok-script-0.0.154}/ok/feature/CompressCoco.py +0 -0
  50. {ok-script-0.0.152 → ok-script-0.0.154}/ok/feature/Feature.py +0 -0
  51. {ok-script-0.0.152 → ok-script-0.0.154}/ok/feature/FeatureSet.py +0 -0
  52. {ok-script-0.0.152 → ok-script-0.0.154}/ok/feature/FindFeature.py +0 -0
  53. {ok-script-0.0.152 → ok-script-0.0.154}/ok/feature/__init__.py +0 -0
  54. {ok-script-0.0.152 → ok-script-0.0.154}/ok/firebase/Analytics.py +0 -0
  55. {ok-script-0.0.152 → ok-script-0.0.154}/ok/firebase/__init__.py +0 -0
  56. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/App.py +0 -0
  57. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/Communicate.py +0 -0
  58. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/MainWindow.py +0 -0
  59. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/MessageWindow.py +0 -0
  60. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/TabTitles.py +0 -0
  61. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/__init__.py +0 -0
  62. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/about/AboutTab.py +0 -0
  63. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/about/HttpTextEdit.py +0 -0
  64. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/about/VersionCard.py +0 -0
  65. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/about/__init__.py +0 -0
  66. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/common/OKIcon.py +0 -0
  67. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/common/__init__.py +0 -0
  68. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/common/config.py +0 -0
  69. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/common/style_sheet.py +0 -0
  70. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/config/AppConfigWidget.py +0 -0
  71. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/config/__init__.py +0 -0
  72. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/debug/AspectRatioWidget.py +0 -0
  73. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/debug/DebugTab.py +0 -0
  74. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/debug/FrameWidget.py +0 -0
  75. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/debug/InfoWidget.py +0 -0
  76. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/debug/LogWindow.py +0 -0
  77. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/debug/Screenshot.py +0 -0
  78. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/debug/__init__.py +0 -0
  79. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/i18n/GettextTranslator.py +0 -0
  80. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/i18n/__init__.py +0 -0
  81. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/i18n/path.py +0 -0
  82. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/i18n/update.py +0 -0
  83. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/icon/__init__.py +0 -0
  84. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/icon/icon.py +0 -0
  85. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/overlay/OverlayWindow.py +0 -0
  86. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/overlay/__init__.py +0 -0
  87. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/qss/__init__.py +0 -0
  88. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/settings/GlobalConfigCard.py +0 -0
  89. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/settings/SettingTab.py +0 -0
  90. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/settings/__init__.py +0 -0
  91. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/start/SelectCaptureListView.py +0 -0
  92. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/start/StartCard.py +0 -0
  93. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/start/StartTab.py +0 -0
  94. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/start/__init__.py +0 -0
  95. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/tasks/ConfigCard.py +0 -0
  96. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/tasks/ConfigItemFactory.py +0 -0
  97. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/tasks/ConfigLabelAndWidget.py +0 -0
  98. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/tasks/LabelAndDoubleSpinBox.py +0 -0
  99. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/tasks/LabelAndDropDown.py +0 -0
  100. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/tasks/LabelAndLineEdit.py +0 -0
  101. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/tasks/LabelAndList.py +0 -0
  102. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/tasks/LabelAndSpinBox.py +0 -0
  103. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/tasks/LabelAndSwitchButton.py +0 -0
  104. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/tasks/LabelAndWidget.py +0 -0
  105. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/tasks/ModifyListDialog.py +0 -0
  106. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/tasks/ModifyListItem.py +0 -0
  107. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/tasks/OneTimeTaskTab.py +0 -0
  108. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/tasks/StartButton.py +0 -0
  109. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/tasks/TaskCard.py +0 -0
  110. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/tasks/TaskOpButton.py +0 -0
  111. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/tasks/TaskTab.py +0 -0
  112. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/tasks/TooltipTableWidget.py +0 -0
  113. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/tasks/TriggerTaskTab.py +0 -0
  114. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/tasks/__init__.py +0 -0
  115. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/util/Alert.py +0 -0
  116. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/util/InitWorker.py +0 -0
  117. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/util/__init__.py +0 -0
  118. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/widget/Card.py +0 -0
  119. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/widget/EmptyCard.py +0 -0
  120. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/widget/FramelessDialog.py +0 -0
  121. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/widget/ListTableWidgetItem.py +0 -0
  122. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/widget/NumericTableWidgetItem.py +0 -0
  123. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/widget/StartLoadingDialog.py +0 -0
  124. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/widget/StatusBar.py +0 -0
  125. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/widget/Tab.py +0 -0
  126. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/widget/TabWidget.py +0 -0
  127. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/widget/UpdateConfigWidgetItem.py +0 -0
  128. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/widget/YesNonWidgetItem.py +0 -0
  129. {ok-script-0.0.152 → ok-script-0.0.154}/ok/gui/widget/__init__.py +0 -0
  130. {ok-script-0.0.152 → ok-script-0.0.154}/ok/interaction/ADBInteraction.py +0 -0
  131. {ok-script-0.0.152 → ok-script-0.0.154}/ok/interaction/BaseInteraction.py +0 -0
  132. {ok-script-0.0.152 → ok-script-0.0.154}/ok/interaction/DoNothingInteraction.py +0 -0
  133. {ok-script-0.0.152 → ok-script-0.0.154}/ok/interaction/PostMessageInteraction.py +0 -0
  134. {ok-script-0.0.152 → ok-script-0.0.154}/ok/interaction/PyDirectInteraction.py +0 -0
  135. {ok-script-0.0.152 → ok-script-0.0.154}/ok/interaction/__init__.py +0 -0
  136. {ok-script-0.0.152 → ok-script-0.0.154}/ok/logging/Logger.py +0 -0
  137. {ok-script-0.0.152 → ok-script-0.0.154}/ok/logging/__init__.py +0 -0
  138. {ok-script-0.0.152 → ok-script-0.0.154}/ok/ocr/OCR.py +0 -0
  139. {ok-script-0.0.152 → ok-script-0.0.154}/ok/ocr/__init__.py +0 -0
  140. {ok-script-0.0.152 → ok-script-0.0.154}/ok/rotypes/Windows/Foundation/Collections.py +0 -0
  141. {ok-script-0.0.152 → ok-script-0.0.154}/ok/rotypes/Windows/Foundation/__init__.py +0 -0
  142. {ok-script-0.0.152 → ok-script-0.0.154}/ok/rotypes/Windows/Globalization/__init__.py +0 -0
  143. {ok-script-0.0.152 → ok-script-0.0.154}/ok/rotypes/Windows/Graphics/Capture/__init__.py +0 -0
  144. {ok-script-0.0.152 → ok-script-0.0.154}/ok/rotypes/Windows/Graphics/DirectX/Direct3D11/__init__.py +0 -0
  145. {ok-script-0.0.152 → ok-script-0.0.154}/ok/rotypes/Windows/Graphics/DirectX/__init__.py +0 -0
  146. {ok-script-0.0.152 → ok-script-0.0.154}/ok/rotypes/Windows/Graphics/Imaging/__init__.py +0 -0
  147. {ok-script-0.0.152 → ok-script-0.0.154}/ok/rotypes/Windows/Graphics/__init__.py +0 -0
  148. {ok-script-0.0.152 → ok-script-0.0.154}/ok/rotypes/Windows/Media/Ocr/__init__.py +0 -0
  149. {ok-script-0.0.152 → ok-script-0.0.154}/ok/rotypes/Windows/Media/__init__.py +0 -0
  150. {ok-script-0.0.152 → ok-script-0.0.154}/ok/rotypes/Windows/Security/Cryptography/__init__.py +0 -0
  151. {ok-script-0.0.152 → ok-script-0.0.154}/ok/rotypes/Windows/Security/__init__.py +0 -0
  152. {ok-script-0.0.152 → ok-script-0.0.154}/ok/rotypes/Windows/Storage/Streams/__init__.py +0 -0
  153. {ok-script-0.0.152 → ok-script-0.0.154}/ok/rotypes/Windows/Storage/__init__.py +0 -0
  154. {ok-script-0.0.152 → ok-script-0.0.154}/ok/rotypes/Windows/__init__.py +0 -0
  155. {ok-script-0.0.152 → ok-script-0.0.154}/ok/rotypes/__init__.py +0 -0
  156. {ok-script-0.0.152 → ok-script-0.0.154}/ok/rotypes/delegate.py +0 -0
  157. {ok-script-0.0.152 → ok-script-0.0.154}/ok/rotypes/export.py +0 -0
  158. {ok-script-0.0.152 → ok-script-0.0.154}/ok/rotypes/idldsl.py +0 -0
  159. {ok-script-0.0.152 → ok-script-0.0.154}/ok/rotypes/inspectable.py +0 -0
  160. {ok-script-0.0.152 → ok-script-0.0.154}/ok/rotypes/roapi.py +0 -0
  161. {ok-script-0.0.152 → ok-script-0.0.154}/ok/rotypes/types.py +0 -0
  162. {ok-script-0.0.152 → ok-script-0.0.154}/ok/rotypes/winstring.py +0 -0
  163. {ok-script-0.0.152 → ok-script-0.0.154}/ok/save/BlackBarProcessor.py +0 -0
  164. {ok-script-0.0.152 → ok-script-0.0.154}/ok/save/PostProcessor.py +0 -0
  165. {ok-script-0.0.152 → ok-script-0.0.154}/ok/save/SaveByInterval.py +0 -0
  166. {ok-script-0.0.152 → ok-script-0.0.154}/ok/save/SaveByKeyPress.py +0 -0
  167. {ok-script-0.0.152 → ok-script-0.0.154}/ok/save/SaveMethodBase.py +0 -0
  168. {ok-script-0.0.152 → ok-script-0.0.154}/ok/save/__init__.py +0 -0
  169. {ok-script-0.0.152 → ok-script-0.0.154}/ok/scene/FeatureScene.py +0 -0
  170. {ok-script-0.0.152 → ok-script-0.0.154}/ok/scene/Scene.py +0 -0
  171. {ok-script-0.0.152 → ok-script-0.0.154}/ok/scene/__init__.py +0 -0
  172. {ok-script-0.0.152 → ok-script-0.0.154}/ok/stats/StreamStats.py +0 -0
  173. {ok-script-0.0.152 → ok-script-0.0.154}/ok/stats/__init__.py +0 -0
  174. {ok-script-0.0.152 → ok-script-0.0.154}/ok/task/BaseTask.py +0 -0
  175. {ok-script-0.0.152 → ok-script-0.0.154}/ok/task/ExecutorOperation.py +0 -0
  176. {ok-script-0.0.152 → ok-script-0.0.154}/ok/task/TaskExecutor.py +0 -0
  177. {ok-script-0.0.152 → ok-script-0.0.154}/ok/task/TriggerTask.py +0 -0
  178. {ok-script-0.0.152 → ok-script-0.0.154}/ok/task/__init__.py +0 -0
  179. {ok-script-0.0.152 → ok-script-0.0.154}/ok/update/GithubMultiDownloader.py +0 -0
  180. {ok-script-0.0.152 → ok-script-0.0.154}/ok/update/Updater.py +0 -0
  181. {ok-script-0.0.152 → ok-script-0.0.154}/ok/update/__init__.py +0 -0
  182. {ok-script-0.0.152 → ok-script-0.0.154}/ok/update/gen_md5.py +0 -0
  183. {ok-script-0.0.152 → ok-script-0.0.154}/ok/util/Handler.py +0 -0
  184. {ok-script-0.0.152 → ok-script-0.0.154}/ok/util/__init__.py +0 -0
  185. {ok-script-0.0.152 → ok-script-0.0.154}/ok/util/exit_event.py +0 -0
  186. {ok-script-0.0.152 → ok-script-0.0.154}/ok/util/json.py +0 -0
  187. {ok-script-0.0.152 → ok-script-0.0.154}/ok/util/list.py +0 -0
  188. {ok-script-0.0.152 → ok-script-0.0.154}/ok/util/path.py +0 -0
  189. {ok-script-0.0.152 → ok-script-0.0.154}/ok/util/thread.py +0 -0
  190. {ok-script-0.0.152 → ok-script-0.0.154}/ok/util/win32_process.py +0 -0
  191. {ok-script-0.0.152 → ok-script-0.0.154}/ok/util/yaml.py +0 -0
  192. {ok-script-0.0.152 → ok-script-0.0.154}/ok_script.egg-info/SOURCES.txt +0 -0
  193. {ok-script-0.0.152 → ok-script-0.0.154}/ok_script.egg-info/dependency_links.txt +0 -0
  194. {ok-script-0.0.152 → ok-script-0.0.154}/ok_script.egg-info/requires.txt +0 -0
  195. {ok-script-0.0.152 → ok-script-0.0.154}/ok_script.egg-info/top_level.txt +0 -0
  196. {ok-script-0.0.152 → ok-script-0.0.154}/setup.cfg +0 -0
  197. {ok-script-0.0.152 → ok-script-0.0.154}/tests/__init__.py +0 -0
  198. {ok-script-0.0.152 → ok-script-0.0.154}/tests/test_updater.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ok-script
3
- Version: 0.0.152
3
+ Version: 0.0.154
4
4
  Summary: Automation with Computer Vision for Python
5
5
  Home-page: https://github.com/ok-oldking/ok-script
6
6
  Author: ok-oldking
@@ -17,7 +17,7 @@ logger = get_logger(__name__)
17
17
 
18
18
  class HwndWindow:
19
19
 
20
- def __init__(self, exit_event, title, exe_name=None, frame_width=0, frame_height=0, player_id=-1):
20
+ def __init__(self, exit_event, title, exe_name=None, frame_width=0, frame_height=0, player_id=-1, hwnd_class=None):
21
21
  super().__init__()
22
22
  self.app_exit_event = exit_event
23
23
  self.exe_name = exe_name
@@ -44,10 +44,12 @@ class HwndWindow:
44
44
  self.real_y_offset = 0
45
45
  self.scaling = 1.0
46
46
  self.frame_aspect_ratio = 0
47
+ self.hwnd_class = hwnd_class
48
+ self.pos_valid = False
49
+ self._hwnd_title = ""
47
50
  self.update_window(title, exe_name, frame_width, frame_height)
48
51
  self.thread = threading.Thread(target=self.update_window_size, name="update_window_size")
49
52
  self.thread.start()
50
- self._hwnd_title = ""
51
53
 
52
54
  def stop(self):
53
55
  self.stop_event.set()
@@ -84,7 +86,7 @@ class HwndWindow:
84
86
  name, self.hwnd, self.exe_full_path, self.real_x_offset, self.real_y_offset, self.real_width, self.real_height = find_hwnd(
85
87
  self.title,
86
88
  self.exe_name,
87
- self.frame_width, self.frame_height, player_id=self.player_id)
89
+ self.frame_width, self.frame_height, player_id=self.player_id, class_name=self.hwnd_class)
88
90
  if self.hwnd is not None:
89
91
  logger.info(
90
92
  f'found hwnd {self.hwnd} {self.exe_full_path} {win32gui.GetClassName(self.hwnd)} real:{self.real_x_offset},{self.real_y_offset},{self.real_width},{self.real_height}')
@@ -100,6 +102,14 @@ class HwndWindow:
100
102
  if window_ratio < self.frame_aspect_ratio:
101
103
  cropped_window_height = int(width / self.frame_aspect_ratio)
102
104
  height = cropped_window_height
105
+ pos_valid = check_pos(x, y, width, height)
106
+ if not pos_valid and pos_valid != self.pos_valid and ok.gui.executor is not None:
107
+ ok.gui.executor.pause()
108
+ logger.error(f'ok.gui.executor.pause pos_invalid: {x, y, width, height}')
109
+ communicate.notification.emit('Paused because game window is minimized or out of screen!', None,
110
+ True, True)
111
+ if pos_valid != self.pos_valid:
112
+ self.pos_valid = pos_valid
103
113
  else:
104
114
  ok.gui.executor.pause()
105
115
  communicate.notification.emit('Paused because game exited', None, True, True)
@@ -140,14 +150,18 @@ class HwndWindow:
140
150
  return f"title_{self.title}_{self.exe_name}_{self.width}x{self.height}_{self.hwnd}_{self.exists}_{self.visible}"
141
151
 
142
152
 
143
- def find_hwnd(title, exe_name, frame_width, frame_height, player_id=-1):
153
+ def check_pos(x, y, width, height):
154
+ return x >= 0 and y >= 0 and width >= 0 and height >= 0
155
+
156
+
157
+ def find_hwnd(title, exe_name, frame_width, frame_height, player_id=-1, class_name=None):
144
158
  results = []
145
159
  if exe_name is None and title is None:
146
160
  return None, None, None, 0, 0, 0, 0
147
161
  frame_aspect_ratio = frame_width / frame_height if frame_height != 0 else 0
148
162
 
149
163
  def callback(hwnd, lParam):
150
- if win32gui.IsWindowVisible(hwnd) and win32gui.IsWindowEnabled(hwnd):
164
+ if win32gui.IsWindow(hwnd) and win32gui.IsWindowEnabled(hwnd) and win32gui.IsWindowVisible(hwnd):
151
165
  text = win32gui.GetWindowText(hwnd)
152
166
  if title:
153
167
  if isinstance(title, str):
@@ -169,11 +183,15 @@ def find_hwnd(title, exe_name, frame_width, frame_height, player_id=-1):
169
183
  logger.debug(
170
184
  f'player id check failed,cmdline {cmdline} {get_player_id_from_cmdline(cmdline)} != {player_id}')
171
185
  return True
186
+ if class_name is not None:
187
+ if win32gui.GetClassName(hwnd) != class_name:
188
+ return True
172
189
  results.append(ret)
173
190
  return True
174
191
 
175
192
  win32gui.EnumWindows(callback, None)
176
193
  if len(results) > 0:
194
+ logger.info(f'find_hwnd {results}')
177
195
  biggest = None
178
196
  for result in results:
179
197
  if biggest is None or (result[2] * result[3]) > biggest[2] * biggest[3]:
@@ -252,12 +270,3 @@ def get_exe_by_hwnd(hwnd):
252
270
  except Exception as e:
253
271
  logger.error('get_exe_by_hwnd error', e)
254
272
  return None, None, None
255
-
256
-
257
- if __name__ == '__main__':
258
- print(find_hwnd("MuMu模拟器12", None))
259
- # hwnd_window = HwndWindow(threading.Event(), None, 'D:\\MuMuPlayer-12.0\\shell\\MuMuPlayer.exe', 16, 9)
260
- # from ok.capture.windows.BitBltCaptureMethod import BitBltCaptureMethod
261
- #
262
- # method = BitBltCaptureMethod(hwnd_window)
263
- # method.get_frame()
@@ -35,7 +35,8 @@ class DeviceManager:
35
35
  self.resolution_dict = {}
36
36
  if self.windows_capture_config is not None:
37
37
  self.hwnd = HwndWindow(exit_event, self.windows_capture_config.get('title'),
38
- self.windows_capture_config.get('exe'))
38
+ self.windows_capture_config.get('exe'),
39
+ hwnd_class=self.windows_capture_config.get('hwnd_class'))
39
40
  from ok.interaction.PostMessageInteraction import PostMessageInteraction
40
41
  from ok.interaction.PyDirectInteraction import PyDirectInteraction
41
42
  self.win_interaction_class = PostMessageInteraction if self.windows_capture_config.get(
@@ -117,7 +118,9 @@ class DeviceManager:
117
118
  def update_pc_device(self):
118
119
  if self.windows_capture_config is not None:
119
120
  name, hwnd, full_path, x, y, width, height = find_hwnd(self.windows_capture_config.get('title'),
120
- self.windows_capture_config.get('exe'), 0, 0)
121
+ self.windows_capture_config.get('exe'), 0, 0,
122
+ class_name=self.windows_capture_config.get(
123
+ 'hwnd_class'))
121
124
  nick = name or self.windows_capture_config.get('exe')
122
125
  pc_device = {"address": "", "imei": 'pc', "device": "windows",
123
126
  "model": "", "nick": nick, "width": width,
@@ -289,7 +292,8 @@ class DeviceManager:
289
292
 
290
293
  def ensure_hwnd(self, title, exe, frame_width=0, frame_height=0, player_id=-1):
291
294
  if self.hwnd is None:
292
- self.hwnd = HwndWindow(self.exit_event, title, exe, frame_width, frame_height, player_id)
295
+ self.hwnd = HwndWindow(self.exit_event, title, exe, frame_width, frame_height, player_id,
296
+ self.windows_capture_config.get('hwnd_class'))
293
297
  else:
294
298
  self.hwnd.update_window(title, exe, frame_width, frame_height, player_id)
295
299
 
@@ -76,16 +76,17 @@ class StartController(QObject):
76
76
  if not ok.gui.device_manager.capture_method.connected():
77
77
  logger.error(f'Game window is not connected {ok.gui.device_manager.capture_method}')
78
78
  return self.tr("Game window is not connected, please select the game window and capture method.")
79
- if isinstance(ok.gui.device_manager.capture_method, BaseWindowsCaptureMethod) and self.config.get('windows',
80
- {}).get(
81
- 'check_hdr_and_night_light', False):
82
- logger.info(f'start checking for hdr and night light')
83
- from ok.display.display import is_night_light_enabled
84
- if is_night_light_enabled():
85
- return self.tr(f'Windows night light is enabled, please turn it off first.')
86
- from ok.display.display import is_hdr_enabled
87
- if is_hdr_enabled():
88
- return self.tr(f'Windows HDR is enabled, please turn it off first.')
79
+ if isinstance(ok.gui.device_manager.capture_method, BaseWindowsCaptureMethod):
80
+ if self.config.get('windows', {}).get('check_hdr_and_night_light', False):
81
+ logger.info(f'start checking for hdr and night light')
82
+ from ok.display.display import is_night_light_enabled
83
+ if is_night_light_enabled():
84
+ return self.tr(f'Windows night light is enabled, please turn it off first.')
85
+ from ok.display.display import is_hdr_enabled
86
+ if is_hdr_enabled():
87
+ return self.tr(f'Windows HDR is enabled, please turn it off first.')
88
+ if not ok.gui.device_manager.capture_method.hwnd_window.pos_valid:
89
+ return self.tr(f'Game window is minimized or out of screen, please restore it first!')
89
90
  frame = self.try_capture_a_frame()
90
91
  if frame is None:
91
92
  return self.tr('Capture failed, please check game window')