ascript 1.3.0__tar.gz → 1.3.2__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 (291) hide show
  1. {ascript-1.3.0 → ascript-1.3.2}/PKG-INFO +1 -1
  2. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/__init__.py +4 -0
  3. ascript-1.3.2/ascript/windows/daos/screen.py +156 -0
  4. ascript-1.3.2/ascript/windows/hardware/keyboard.py +107 -0
  5. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/hardware/logitech_driver.py +62 -9
  6. ascript-1.3.2/ascript/windows/hardware/mouse.py +202 -0
  7. ascript-1.3.2/ascript/windows/license/__init__.py +16 -0
  8. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/resources/templates/build.py +9 -0
  9. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/resources/templates/windows/main.py +12 -10
  10. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/screen/as_cv.py +128 -13
  11. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/screen/find_colors.py +60 -9
  12. ascript-1.3.2/ascript/windows/screen/find_images.py +111 -0
  13. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/screen/ocr/rapidocr_hook.py +125 -19
  14. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/screen/screen_core.py +30 -6
  15. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/store/__init__.py +2 -1
  16. ascript-1.3.2/ascript/windows/system/device.py +355 -0
  17. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/system/easy_print.py +42 -3
  18. ascript-1.3.2/ascript/windows/system/env.py +506 -0
  19. ascript-1.3.2/ascript/windows/system/key_value.py +145 -0
  20. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/system/pip.py +36 -2
  21. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/system/r.py +76 -9
  22. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/system/runtime.py +16 -5
  23. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/action.py +29 -0
  24. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/colors_tool.py +81 -4
  25. ascript-1.3.2/ascript/windows/tools/config.py +26 -0
  26. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/dumptool.py +9 -0
  27. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/eel_api.py +113 -14
  28. ascript-1.3.2/ascript/windows/tools/gpplug/plug.py +70 -0
  29. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/mouse_catch.py +29 -0
  30. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/plug_manager.py +10 -0
  31. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/ui/app_store_window.py +101 -10
  32. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/ui/draw_window.py +58 -1
  33. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/ui/flot_test.py +62 -1
  34. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/ui/flot_window.py +132 -0
  35. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/ui/license_window.py +39 -1
  36. ascript-1.3.2/ascript/windows/ui/web_window.py +117 -0
  37. ascript-1.3.2/ascript/windows/utils/node_utils.py +20 -0
  38. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/utils/screen_utils.py +111 -0
  39. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/window/Selector.py +311 -28
  40. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/window/Window.py +192 -32
  41. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/window/launcher.py +58 -7
  42. {ascript-1.3.0 → ascript-1.3.2}/ascript.egg-info/PKG-INFO +1 -1
  43. {ascript-1.3.0 → ascript-1.3.2}/ascript.egg-info/SOURCES.txt +1 -70
  44. ascript-1.3.2/ascript.egg-info/top_level.txt +1 -0
  45. {ascript-1.3.0 → ascript-1.3.2}/pyproject.toml +66 -82
  46. ascript-1.3.0/ascript/android/__init__.py +0 -17
  47. ascript-1.3.0/ascript/android/action/__init__.py +0 -276
  48. ascript-1.3.0/ascript/android/action/ashid.py +0 -32
  49. ascript-1.3.0/ascript/android/cloud_control.py +0 -19
  50. ascript-1.3.0/ascript/android/data.py +0 -15
  51. ascript-1.3.0/ascript/android/media.py +0 -161
  52. ascript-1.3.0/ascript/android/node.py +0 -326
  53. ascript-1.3.0/ascript/android/plug.py +0 -9
  54. ascript-1.3.0/ascript/android/screen/__init__.py +0 -1010
  55. ascript-1.3.0/ascript/android/screen/ascv.py +0 -334
  56. ascript-1.3.0/ascript/android/screen/color_tools.py +0 -205
  57. ascript-1.3.0/ascript/android/screen/gp.py +0 -182
  58. ascript-1.3.0/ascript/android/screen/gp_tasks.py +0 -396
  59. ascript-1.3.0/ascript/android/screen/gp_tool.py +0 -117
  60. ascript-1.3.0/ascript/android/shizuku/__init__.py +0 -18
  61. ascript-1.3.0/ascript/android/system/__init__.py +0 -206
  62. ascript-1.3.0/ascript/android/ui.py +0 -199
  63. ascript-1.3.0/ascript/ios/action/__init__.py +0 -90
  64. ascript-1.3.0/ascript/ios/developer/api/__init__.py +0 -113
  65. ascript-1.3.0/ascript/ios/developer/api/api_2_android.py +0 -7
  66. ascript-1.3.0/ascript/ios/developer/api/api_code.py +0 -43
  67. ascript-1.3.0/ascript/ios/developer/api/api_file.py +0 -194
  68. ascript-1.3.0/ascript/ios/developer/api/api_label.py +0 -45
  69. ascript-1.3.0/ascript/ios/developer/api/api_module.py +0 -258
  70. ascript-1.3.0/ascript/ios/developer/api/api_node.py +0 -132
  71. ascript-1.3.0/ascript/ios/developer/api/api_screen.py +0 -108
  72. ascript-1.3.0/ascript/ios/developer/api/api_tool.py +0 -19
  73. ascript-1.3.0/ascript/ios/developer/api/dao.py +0 -55
  74. ascript-1.3.0/ascript/ios/developer/api/data.py +0 -191
  75. ascript-1.3.0/ascript/ios/developer/api/file_utils.py +0 -60
  76. ascript-1.3.0/ascript/ios/developer/api/label_utils.py +0 -275
  77. ascript-1.3.0/ascript/ios/developer/api/line_helper.py +0 -51
  78. ascript-1.3.0/ascript/ios/developer/api/oc.py +0 -519
  79. ascript-1.3.0/ascript/ios/developer/api/oc_gp.py +0 -307
  80. ascript-1.3.0/ascript/ios/developer/api/sp_utils.py +0 -62
  81. ascript-1.3.0/ascript/ios/developer/api/utils.py +0 -168
  82. ascript-1.3.0/ascript/ios/developer/api/wda_gp.py +0 -106
  83. ascript-1.3.0/ascript/ios/developer/ws.py +0 -101
  84. ascript-1.3.0/ascript/ios/ime.py +0 -13
  85. ascript-1.3.0/ascript/ios/media.py +0 -21
  86. ascript-1.3.0/ascript/ios/node.py +0 -326
  87. ascript-1.3.0/ascript/ios/screen/__init__.py +0 -434
  88. ascript-1.3.0/ascript/ios/screen/ascv.py +0 -420
  89. ascript-1.3.0/ascript/ios/screen/color_tools.py +0 -231
  90. ascript-1.3.0/ascript/ios/screen/dao.py +0 -0
  91. ascript-1.3.0/ascript/ios/screen/gp.py +0 -189
  92. ascript-1.3.0/ascript/ios/screen/yolov8.py +0 -47
  93. ascript-1.3.0/ascript/ios/system/__init__.py +0 -197
  94. ascript-1.3.0/ascript/ios/system/device.py +0 -36
  95. ascript-1.3.0/ascript/ios/ui.py +0 -37
  96. ascript-1.3.0/ascript/ios/wdapy/__init__.py +0 -9
  97. ascript-1.3.0/ascript/ios/wdapy/_alert.py +0 -49
  98. ascript-1.3.0/ascript/ios/wdapy/_base.py +0 -200
  99. ascript-1.3.0/ascript/ios/wdapy/_node.py +0 -443
  100. ascript-1.3.0/ascript/ios/wdapy/_proto.py +0 -56
  101. ascript-1.3.0/ascript/ios/wdapy/_types.py +0 -167
  102. ascript-1.3.0/ascript/ios/wdapy/_utils.py +0 -35
  103. ascript-1.3.0/ascript/ios/wdapy/_wdapy.py +0 -496
  104. ascript-1.3.0/ascript/ios/wdapy/_wrap.py +0 -26
  105. ascript-1.3.0/ascript/ios/wdapy/exceptions.py +0 -102
  106. ascript-1.3.0/ascript/ios/wdapy/xcui_element_types.py +0 -89
  107. ascript-1.3.0/ascript/windows/daos/screen.py +0 -58
  108. ascript-1.3.0/ascript/windows/hardware/keyboard.py +0 -89
  109. ascript-1.3.0/ascript/windows/hardware/mouse.py +0 -112
  110. ascript-1.3.0/ascript/windows/license/__init__.py +0 -6
  111. ascript-1.3.0/ascript/windows/screen/find_images.py +0 -71
  112. ascript-1.3.0/ascript/windows/system/device.py +0 -188
  113. ascript-1.3.0/ascript/windows/system/env.py +0 -287
  114. ascript-1.3.0/ascript/windows/system/key_value.py +0 -78
  115. ascript-1.3.0/ascript/windows/tools/config.py +0 -15
  116. ascript-1.3.0/ascript/windows/tools/gpplug/__init__.py +0 -0
  117. ascript-1.3.0/ascript/windows/tools/gpplug/plug.py +0 -41
  118. ascript-1.3.0/ascript/windows/ui/web_window.py +0 -68
  119. ascript-1.3.0/ascript/windows/utils/__init__.py +0 -0
  120. ascript-1.3.0/ascript/windows/utils/node_utils.py +0 -5
  121. ascript-1.3.0/ascript.egg-info/top_level.txt +0 -3
  122. ascript-1.3.0/docs/source/_build/_sources/autoapi/ascript/windows/client/tools/index.rst.txt +0 -100
  123. ascript-1.3.0/docs/source/_build/autoapi/ascript/windows/client/tools/index.html +0 -277
  124. ascript-1.3.0/docs/source/build_index.py +0 -69
  125. ascript-1.3.0/docs/source/conf.py +0 -49
  126. ascript-1.3.0/docs/source/doc_extractor.py +0 -247
  127. ascript-1.3.0/docs/source/generate_api_data.py +0 -131
  128. {ascript-1.3.0 → ascript-1.3.2}/MANIFEST.in +0 -0
  129. {ascript-1.3.0 → ascript-1.3.2}/README.md +0 -0
  130. {ascript-1.3.0 → ascript-1.3.2}/ascript/__init__.py +0 -0
  131. {ascript-1.3.0 → ascript-1.3.2}/ascript/hooks/__init__.py +0 -0
  132. {ascript-1.3.0 → ascript-1.3.2}/ascript/hooks/hook-ascript.py +0 -0
  133. {ascript-1.3.0/ascript/ios → ascript-1.3.2/ascript/windows/daos}/__init__.py +0 -0
  134. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/hardware/__init__.py +0 -0
  135. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/license/achttp.cp310-win_amd64.pyd +0 -0
  136. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/license/achttp.cp311-win_amd64.pyd +0 -0
  137. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/license/achttp.cp312-win_amd64.pyd +0 -0
  138. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/license/achttp.cp313-win_amd64.pyd +0 -0
  139. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/license/achttp.cp314-win_amd64.pyd +0 -0
  140. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/license/achttp.cp38-win_amd64.pyd +0 -0
  141. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/license/achttp.cp39-win_amd64.pyd +0 -0
  142. {ascript-1.3.0/ascript/ios/developer → ascript-1.3.2/ascript/windows/media}/__init__.py +0 -0
  143. {ascript-1.3.0/ascript/windows/daos → ascript-1.3.2/ascript/windows/resources}/__init__.py +0 -0
  144. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/resources/libs/logitech/x64/LogitechGkeyEnginesWrapper.dll +0 -0
  145. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/resources/libs/logitech/x86/LogitechGkeyEnginesWrapper.dll +0 -0
  146. {ascript-1.3.0/ascript/windows/media → ascript-1.3.2/ascript/windows/resources/templates}/__init__.py +0 -0
  147. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/resources/templates/__init__py.win.template +0 -0
  148. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/resources/templates/build.as.win.template +0 -0
  149. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/resources/templates/logo_windows.ico +0 -0
  150. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/resources/templates/windows/pyproject.toml +0 -0
  151. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/resources/templates/windows/res/img/logo.ico +0 -0
  152. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/screen/__init__.py +0 -0
  153. {ascript-1.3.0/ascript/windows/resources → ascript-1.3.2/ascript/windows/screen/ocr}/__init__.py +0 -0
  154. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/system/__init__.py +0 -0
  155. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/system/exception/__init__.py +0 -0
  156. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__init__.py +0 -0
  157. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/__init__.cpython-310.pyc +0 -0
  158. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/__init__.cpython-312.pyc +0 -0
  159. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/__init__.cpython-313.pyc +0 -0
  160. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/__init__.cpython-39.pyc +0 -0
  161. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/action.cpython-310.pyc +0 -0
  162. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/action.cpython-312.pyc +0 -0
  163. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/action.cpython-313.pyc +0 -0
  164. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/action.cpython-39.pyc +0 -0
  165. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/colors_tool.cpython-310.pyc +0 -0
  166. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/colors_tool.cpython-312.pyc +0 -0
  167. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/colors_tool.cpython-313.pyc +0 -0
  168. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/colors_tool.cpython-39.pyc +0 -0
  169. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/config.cpython-310.pyc +0 -0
  170. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/config.cpython-312.pyc +0 -0
  171. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/config.cpython-313.pyc +0 -0
  172. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/config.cpython-39.pyc +0 -0
  173. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/dumptool.cpython-310.pyc +0 -0
  174. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/dumptool.cpython-312.pyc +0 -0
  175. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/dumptool.cpython-313.pyc +0 -0
  176. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/dumptool.cpython-39.pyc +0 -0
  177. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/eel_api.cpython-310.pyc +0 -0
  178. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/eel_api.cpython-312.pyc +0 -0
  179. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/eel_api.cpython-313.pyc +0 -0
  180. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/eel_api.cpython-39.pyc +0 -0
  181. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/mouse_catch.cpython-310.pyc +0 -0
  182. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/mouse_catch.cpython-312.pyc +0 -0
  183. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/mouse_catch.cpython-313.pyc +0 -0
  184. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/mouse_catch.cpython-39.pyc +0 -0
  185. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/plug_manager.cpython-310.pyc +0 -0
  186. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/plug_manager.cpython-312.pyc +0 -0
  187. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/plug_manager.cpython-313.pyc +0 -0
  188. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/plug_manager.cpython-39.pyc +0 -0
  189. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/action.json +0 -0
  190. {ascript-1.3.0/ascript/windows/resources/templates → ascript-1.3.2/ascript/windows/tools/gpplug}/__init__.py +0 -0
  191. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/gpplug/__pycache__/__init__.cpython-310.pyc +0 -0
  192. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/gpplug/__pycache__/__init__.cpython-312.pyc +0 -0
  193. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/gpplug/__pycache__/__init__.cpython-313.pyc +0 -0
  194. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/gpplug/__pycache__/__init__.cpython-39.pyc +0 -0
  195. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/gpplug/__pycache__/plug.cpython-310.pyc +0 -0
  196. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/gpplug/__pycache__/plug.cpython-312.pyc +0 -0
  197. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/gpplug/__pycache__/plug.cpython-313.pyc +0 -0
  198. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/gpplug/__pycache__/plug.cpython-39.pyc +0 -0
  199. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/app_store_window.html +0 -0
  200. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/colors.html +0 -0
  201. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/css/screen.css +0 -0
  202. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/css/viewtree.css +0 -0
  203. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/flot_control.html +0 -0
  204. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/img/ico/favicon.png +0 -0
  205. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/img/ico/paintpalette.png +0 -0
  206. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/img/svg/find_colors.svg +0 -0
  207. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/img/svg/find_images.svg +0 -0
  208. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/img/svg/illustration-6.svg +0 -0
  209. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/img/svg/img_default.svg +0 -0
  210. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/img/svg/ocr.svg +0 -0
  211. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/js/screen/colors.js +0 -0
  212. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/js/screen/gp_plug.js +0 -0
  213. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/js/screen/image_mouse.js +0 -0
  214. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/js/screen/img_view.js +0 -0
  215. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/js/screen/plug.js +0 -0
  216. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/js/screen/screen.js +0 -0
  217. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/js/screen/screen_api.js +0 -0
  218. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/js/screen/screen_maker.js +0 -0
  219. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/js/utils/map.js +0 -0
  220. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/js/utils/upload.js +0 -0
  221. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/js/viewtree/niv_js.js +0 -0
  222. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/js/viewtree/vtree.js +0 -0
  223. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/bootstrap/css/bootstrap.min.css +0 -0
  224. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/bootstrap/js/bootstrap.bundle.min.js +0 -0
  225. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/bootstrap-icons/0-circle.svg +0 -0
  226. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/bootstrap-icons/0-square.svg +0 -0
  227. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/bootstrap-icons/font/bootstrap-icons.css +0 -0
  228. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/bootstrap-icons/font/bootstrap-icons.json +0 -0
  229. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/bootstrap-icons/font/bootstrap-icons.min.css +0 -0
  230. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/bootstrap-icons/font/bootstrap-icons.scss +0 -0
  231. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/bootstrap-icons/font/fonts/bootstrap-icons.woff +0 -0
  232. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/bootstrap-icons/font/fonts/bootstrap-icons.woff2 +0 -0
  233. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/feather-icons/dist/feather.min.js +0 -0
  234. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/feather-icons/dist/icons.json +0 -0
  235. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery/core.js +0 -0
  236. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery/jquery.js +0 -0
  237. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery/jquery.min.js +0 -0
  238. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery/jquery.min.js.zip +0 -0
  239. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery/jquery.slim.js +0 -0
  240. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery/jquery.slim.min.js +0 -0
  241. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-menu/jquery.contextMenu.js +0 -0
  242. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-menu/jquery.contextMenu.min.css +0 -0
  243. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-zTree/css/zTreeStyle.css +0 -0
  244. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-zTree/img/diy/1_close.png +0 -0
  245. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-zTree/img/diy/1_open.png +0 -0
  246. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-zTree/img/diy/2.png +0 -0
  247. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-zTree/img/diy/3.png +0 -0
  248. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-zTree/img/diy/4.png +0 -0
  249. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-zTree/img/diy/5.png +0 -0
  250. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-zTree/img/diy/6.png +0 -0
  251. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-zTree/img/diy/7.png +0 -0
  252. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-zTree/img/diy/8.png +0 -0
  253. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-zTree/img/diy/9.png +0 -0
  254. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-zTree/img/line_conn.gif +0 -0
  255. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-zTree/img/loading.gif +0 -0
  256. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-zTree/img/tree-node-btn.png +0 -0
  257. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-zTree/img/zTreeStandard.gif +0 -0
  258. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-zTree/img/zTreeStandard.png +0 -0
  259. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-zTree/js/jquery.ztree.all.min.js +0 -0
  260. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/css/jquery.treeview.css +0 -0
  261. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/img/file.png +0 -0
  262. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/img/ico_loading.png +0 -0
  263. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/img/icon4.png +0 -0
  264. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/img/icon5.png +0 -0
  265. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/img/icon6.png +0 -0
  266. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/img/py.png +0 -0
  267. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/img/treeview-black-line.gif +0 -0
  268. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/img/treeview-black.gif +0 -0
  269. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/img/treeview-default-line.gif +0 -0
  270. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/img/treeview-default.gif +0 -0
  271. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/img/treeview-famfamfam-line.gif +0 -0
  272. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/img/treeview-famfamfam.gif +0 -0
  273. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/img/treeview-gray-line.gif +0 -0
  274. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/img/treeview-gray.gif +0 -0
  275. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/img/treeview-red-line.gif +0 -0
  276. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/img/treeview-red.gif +0 -0
  277. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/js/jquery.treeview.edit.js +0 -0
  278. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/js/jquery.treeview.js +0 -0
  279. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/license_window.html +0 -0
  280. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/plugs/a.html +0 -0
  281. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/plugs/demo.html +0 -0
  282. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/plugs/find_colors.html +0 -0
  283. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/plugs/find_images.html +0 -0
  284. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/plugs/rapidocr.html +0 -0
  285. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/vtree.html +0 -0
  286. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/ui/__init__.py +0 -0
  287. {ascript-1.3.0/ascript/windows/screen/ocr → ascript-1.3.2/ascript/windows/utils}/__init__.py +0 -0
  288. {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/window/__init__.py +0 -0
  289. {ascript-1.3.0 → ascript-1.3.2}/ascript.egg-info/dependency_links.txt +0 -0
  290. {ascript-1.3.0 → ascript-1.3.2}/ascript.egg-info/requires.txt +0 -0
  291. {ascript-1.3.0 → ascript-1.3.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ascript
3
- Version: 1.3.0
3
+ Version: 1.3.2
4
4
  Summary: Ascript Developer Library
5
5
  License: MIT
6
6
  Classifier: Operating System :: Microsoft :: Windows
@@ -1,3 +1,7 @@
1
+ """ascript.windows 模块 - Windows 平台自动化核心包。
2
+
3
+ 负责初始化 Windows 平台相关的路径配置和 RapidOCR Hook 注入。
4
+ """
1
5
  import os
2
6
  import sys
3
7
 
@@ -0,0 +1,156 @@
1
+ """屏幕数据模型模块。
2
+
3
+ 定义屏幕操作中使用的基础数据结构,包括坐标点、颜色、尺寸和 OCR 识别结果。
4
+ """
5
+
6
+ import json
7
+
8
+
9
+ class Point:
10
+ """屏幕坐标点。
11
+
12
+ 表示屏幕上的一个二维坐标点。
13
+ """
14
+
15
+ def __init__(self, x: int = 0, y: int = 0):
16
+ """初始化坐标点。
17
+
18
+ Args:
19
+ x: 横坐标,默认为 0。
20
+ y: 纵坐标,默认为 0。
21
+ """
22
+ self.x = x
23
+ self.y = y
24
+
25
+ def __str__(self):
26
+ """返回坐标点的 JSON 字符串表示。
27
+
28
+ Returns:
29
+ str: 包含 x 和 y 的 JSON 字符串,例如 '{"x": 100, "y": 200}'。
30
+ """
31
+ return json.dumps({'x': self.x, 'y': self.y})
32
+
33
+ def to_dict(self):
34
+ """将坐标点转换为字典。
35
+
36
+ Returns:
37
+ dict: 包含 'x' 和 'y' 键的字典。
38
+ """
39
+ return {'x': self.x, 'y': self.y}
40
+
41
+
42
+ class Color:
43
+ """颜色值。
44
+
45
+ 将十六进制颜色字符串解析为 RGB 分量。
46
+ """
47
+
48
+ def __init__(self, color: str):
49
+ """初始化颜色对象。
50
+
51
+ 从十六进制颜色字符串(如 '#FF00AA')中解析出 R、G、B 分量。
52
+
53
+ Args:
54
+ color: 十六进制颜色字符串,格式为 '#RRGGBB'。
55
+ """
56
+ self.r = int(color[1:3], 16)
57
+ self.g = int(color[3:5], 16)
58
+ self.b = int(color[5:], 16)
59
+
60
+ def to_rgb(self):
61
+ """将颜色转换为 RGB 列表。
62
+
63
+ Returns:
64
+ list: 包含 [R, G, B] 三个整数值的列表,每个值范围为 0-255。
65
+ """
66
+ return [self.r, self.g, self.b]
67
+
68
+
69
+ class Size:
70
+ """尺寸大小。
71
+
72
+ 表示宽度和高度的二维尺寸。
73
+ """
74
+
75
+ def __init__(self, width, height):
76
+ """初始化尺寸对象。
77
+
78
+ Args:
79
+ width: 宽度值。
80
+ height: 高度值。
81
+ """
82
+ self.width = width
83
+ self.height = height
84
+
85
+
86
+ class Point:
87
+ """屏幕坐标点(重新定义)。
88
+
89
+ 表示屏幕上的一个二维坐标点,覆盖了之前定义的 Point 类。
90
+ """
91
+
92
+ def __init__(self, x: int = 0, y: int = 0):
93
+ """初始化坐标点。
94
+
95
+ Args:
96
+ x: 横坐标,默认为 0。
97
+ y: 纵坐标,默认为 0。
98
+ """
99
+ self.x = x
100
+ self.y = y
101
+
102
+ def __str__(self):
103
+ """返回坐标点的 JSON 字符串表示。
104
+
105
+ Returns:
106
+ str: 包含 x 和 y 的 JSON 字符串。
107
+ """
108
+ return json.dumps({'x': self.x, 'y': self.y})
109
+
110
+ def to_dict(self):
111
+ """将坐标点转换为字典。
112
+
113
+ Returns:
114
+ dict: 包含 'x' 和 'y' 键的字典。
115
+ """
116
+ return {'x': self.x, 'y': self.y}
117
+
118
+
119
+ class OcrRes:
120
+ """OCR 识别结果。
121
+
122
+ 封装单条 OCR 文字识别的结果,包括识别文本、置信度和区域位置信息。
123
+ """
124
+
125
+ def __init__(self, text: str = None, confidence: float = None, region_position: list = None):
126
+ """初始化 OCR 识别结果。
127
+
128
+ Args:
129
+ text: 识别出的文本内容。
130
+ confidence: 识别置信度,取值范围为 0.0 到 1.0。
131
+ region_position: 文本区域的四个顶点坐标列表,
132
+ 格式为 [[x1,y1], [x2,y2], [x3,y3], [x4,y4]]。
133
+ """
134
+ self.text = text
135
+ self.confidence = float(confidence)
136
+ self.region_position = region_position
137
+ if self.region_position:
138
+ self.center_x = region_position[2][0] - region_position[0][0]
139
+ self.center_y = region_position[2][1] - region_position[0][1]
140
+
141
+ def to_dict(self):
142
+ """将 OCR 结果转换为字典。
143
+
144
+ Returns:
145
+ dict: 包含 'text'、'confidence' 和 'region_position' 键的字典。
146
+ """
147
+ return {'text': self.text, 'confidence': self.confidence, 'region_position': self.region_position}
148
+
149
+ def __str__(self):
150
+ """返回 OCR 结果的字符串表示。
151
+
152
+ Returns:
153
+ str: OCR 结果字典的字符串形式。
154
+ """
155
+ return self.to_dict().__str__()
156
+
@@ -0,0 +1,107 @@
1
+ import time
2
+ import pyautogui
3
+ import pyperclip
4
+ from typing import Union, List
5
+
6
+ class Keyboard:
7
+ """键盘自动化操作类。
8
+
9
+ 基于 PyAutoGUI 封装,支持中英文智能输入、组合键操作及链式调用。
10
+ 中文输入通过剪贴板粘贴实现,英文输入通过模拟按键实现。
11
+ 所有方法均为类方法,返回类本身以支持链式调用。
12
+ """
13
+
14
+ @classmethod
15
+ def input(cls, msg: str, interval: float = 0.0):
16
+ """自动识别中英文并输入文本。
17
+
18
+ 如果文本包含非 ASCII 字符(如中文、全角符号),通过剪贴板粘贴实现;
19
+ 如果是纯英文,通过模拟键盘敲击实现。
20
+
21
+ Args:
22
+ msg: 要输入的字符串内容。
23
+ interval: 仅对纯英文输入有效,每个字符之间敲击的间隔时间(秒),默认为 0.0。
24
+
25
+ Returns:
26
+ Keyboard 类本身,支持链式调用。
27
+ """
28
+ # 检查是否包含非 ASCII 字符(如中文、全角符号等)
29
+ if any(ord(c) > 127 for c in msg):
30
+ # 备份当前剪贴板(可选,如果需要更严谨可以记录后还原)
31
+ pyperclip.copy(msg)
32
+ time.sleep(0.1) # 缓冲,确保系统剪贴板已更新
33
+ pyautogui.hotkey('ctrl', 'v')
34
+ else:
35
+ # 纯英文使用 write,比 typewrite 更现代
36
+ pyautogui.write(msg, interval=interval)
37
+ return cls
38
+
39
+ @classmethod
40
+ def key(cls, keys: Union[str, List[str]], presses: int = 1, interval: float = 0.1):
41
+ """按下并释放指定按键。
42
+
43
+ Args:
44
+ keys: 按键名称(如 'enter'、'esc')或按键名称列表。
45
+ presses: 连续按下的次数,默认为 1。
46
+ interval: 连续按下之间的间隔时间(秒),默认为 0.1。
47
+
48
+ Returns:
49
+ Keyboard 类本身,支持链式调用。
50
+ """
51
+ pyautogui.press(keys, presses=presses, interval=interval)
52
+ return cls
53
+
54
+ @classmethod
55
+ def key_hot(cls, *args, interval: float = 0.1):
56
+ """执行组合键操作。
57
+
58
+ 例如 key_hot('ctrl', 'c') 执行复制操作。
59
+
60
+ Args:
61
+ *args: 按键序列,例如 'ctrl', 'alt', 'delete'。
62
+ interval: 按键按下之间的间隔时间(秒),默认为 0.1。
63
+
64
+ Returns:
65
+ Keyboard 类本身,支持链式调用。
66
+ """
67
+ pyautogui.hotkey(*args, interval=interval)
68
+ return cls
69
+
70
+ @classmethod
71
+ def key_down(cls, key_str: str):
72
+ """按下指定按键不松开。
73
+
74
+ Args:
75
+ key_str: 按键名称,如 'shift'、'ctrl'。
76
+
77
+ Returns:
78
+ Keyboard 类本身,支持链式调用。
79
+ """
80
+ pyautogui.keyDown(key_str)
81
+ return cls
82
+
83
+ @classmethod
84
+ def key_up(cls, key_str: str):
85
+ """松开已按下的按键。
86
+
87
+ Args:
88
+ key_str: 按键名称,如 'shift'、'ctrl'。
89
+
90
+ Returns:
91
+ Keyboard 类本身,支持链式调用。
92
+ """
93
+ pyautogui.keyUp(key_str)
94
+ return cls
95
+
96
+ @classmethod
97
+ def wait(cls, seconds: float):
98
+ """在键盘操作链中插入等待。
99
+
100
+ Args:
101
+ seconds: 等待的时长(秒)。
102
+
103
+ Returns:
104
+ Keyboard 类本身,支持链式调用。
105
+ """
106
+ time.sleep(seconds)
107
+ return cls
@@ -6,6 +6,18 @@ from ..system import R
6
6
 
7
7
 
8
8
  class LogitechDriver:
9
+ """罗技驱动级硬件操作类。
10
+
11
+ 通过加载罗技 G HUB SDK 的 DLL,实现驱动级别的鼠标点击和移动操作。
12
+ 需要系统已安装并运行罗技 G HUB 驱动程序。
13
+ 支持 x86 和 x64 架构自动适配。
14
+
15
+ Attributes:
16
+ DLL_NAME: 罗技 SDK DLL 文件名。
17
+ _dll: 已加载的 DLL 对象实例。
18
+ _initialized: 驱动是否已完成初始化。
19
+ """
20
+
9
21
  DLL_NAME = "LogitechGkeyEnginesWrapper.dll"
10
22
 
11
23
  _dll = None
@@ -13,13 +25,24 @@ class LogitechDriver:
13
25
 
14
26
  @classmethod
15
27
  def _get_dll_path(cls):
16
- """根据 Python 位数精准定位 DLL 路径"""
28
+ """根据当前 Python 解释器的位数定位对应架构的 DLL 文件路径。
29
+
30
+ Returns:
31
+ str: DLL 文件的完整路径。
32
+ """
17
33
  arch = "x64" if sys.maxsize > 2 ** 32 else "x86"
18
34
  return R.internal("windows", "resources", "libs", "logitech", arch, cls.DLL_NAME)
19
35
 
20
36
  @classmethod
21
37
  def _is_ghub_running(cls) -> bool:
22
- """多重检测 G HUB 是否在运行"""
38
+ """检测罗技 G HUB 进程是否正在运行。
39
+
40
+ 通过 tasklist 命令检查 lghub.exe、lghub_agent.exe、lghub_updater.exe
41
+ 等进程是否存在。
42
+
43
+ Returns:
44
+ bool: G HUB 正在运行返回 True,否则返回 False。
45
+ """
23
46
  try:
24
47
  # 罗技 G HUB 可能存在于这三个进程中
25
48
  targets = {"lghub.exe", "lghub_agent.exe", "lghub_updater.exe"}
@@ -31,8 +54,14 @@ class LogitechDriver:
31
54
 
32
55
  @classmethod
33
56
  def init(cls) -> bool:
34
- """
35
- 深度初始化逻辑
57
+ """初始化罗技驱动。
58
+
59
+ 执行环境检查(G HUB 进程、DLL 文件),加载 DLL 并尝试调用
60
+ SDK 初始化函数。初始化成功后会等待 0.5 秒确保驱动就绪。
61
+ 重复调用时若已初始化会直接返回 True。
62
+
63
+ Returns:
64
+ bool: 初始化成功返回 True,失败返回 False。
36
65
  """
37
66
  if cls._initialized:
38
67
  return True
@@ -79,7 +108,14 @@ class LogitechDriver:
79
108
 
80
109
  @classmethod
81
110
  def advanced_click_guide(cls):
82
- """高级引导:检查权限与环境"""
111
+ """高级引导:检查运行权限与驱动环境。
112
+
113
+ 检查当前是否以管理员权限运行,并尝试激活驱动模式。
114
+ 在控制台输出检查结果供用户排查问题。
115
+
116
+ Returns:
117
+ bool: 驱动激活成功返回 True,失败返回 False。
118
+ """
83
119
  print("--- [Logitech] 底层引擎自检 ---")
84
120
 
85
121
  # 管理员权限检查
@@ -100,9 +136,16 @@ class LogitechDriver:
100
136
 
101
137
  @classmethod
102
138
  def click(cls, button: int = 1, duration: float = 0.05):
103
- """
104
- 驱动级点击
105
- :param button: 1=左键, 2=中键, 4=右键 (注意:SDK 中右键通常是 4)
139
+ """执行驱动级鼠标点击。
140
+
141
+ 通过罗技 SDK 直接发送鼠标按键事件,可绕过部分反作弊检测。
142
+
143
+ Args:
144
+ button: 鼠标按键编号,1=左键,2=中键,4=右键(SDK 定义)。
145
+ duration: 按下与释放之间的间隔时间(秒),默认为 0.05。
146
+
147
+ Returns:
148
+ bool: 点击成功返回 True,失败(驱动未初始化或异常)返回 False。
106
149
  """
107
150
  if not cls.init():
108
151
  return False
@@ -116,7 +159,17 @@ class LogitechDriver:
116
159
 
117
160
  @classmethod
118
161
  def move_rel(cls, x: int, y: int):
119
- """相对移动"""
162
+ """驱动级鼠标相对位移。
163
+
164
+ 通过罗技 SDK 发送鼠标相对移动事件。
165
+
166
+ Args:
167
+ x: 水平方向的相对位移量(像素)。
168
+ y: 垂直方向的相对位移量(像素)。
169
+
170
+ Returns:
171
+ bool: 移动成功返回对应的 SDK 返回值,失败返回 False。
172
+ """
120
173
  if not cls.init():
121
174
  return False
122
175
  try:
@@ -0,0 +1,202 @@
1
+ import time
2
+ import random
3
+ import pydirectinput
4
+ from ctypes import windll
5
+ from typing import Optional
6
+
7
+ # 启用 DPI 感知
8
+ try:
9
+ windll.shcore.SetProcessDpiAwareness(1)
10
+ except:
11
+ try:
12
+ windll.user32.SetProcessDPIAware()
13
+ except:
14
+ pass
15
+
16
+
17
+ class Mouse:
18
+ """鼠标自动化控制类。
19
+
20
+ 基于 PyDirectInput 封装,支持鼠标移动、点击、长按、滚动、拖拽等操作。
21
+ 已启用 DPI 感知,自动处理 Windows 高分屏缩放。
22
+ 所有方法均为类方法,返回类本身以支持链式调用。
23
+
24
+ Attributes:
25
+ LEFT: 左键标识符。
26
+ MIDDLE: 中键标识符。
27
+ RIGHT: 右键标识符。
28
+ DEFAULT_MOVE_DURATION: 默认鼠标移动耗时(秒)。
29
+ """
30
+
31
+ # 基础按键定义
32
+ LEFT = "left"
33
+ MIDDLE = "middle"
34
+ RIGHT = "right"
35
+
36
+ # 全局配置
37
+ pydirectinput.FAILSAFE = True
38
+ DEFAULT_MOVE_DURATION = 0.1
39
+
40
+ @classmethod
41
+ def mouse_move(cls, x: int, y: int, move_duration: float = DEFAULT_MOVE_DURATION):
42
+ """移动鼠标到屏幕上的指定坐标位置。
43
+
44
+ Args:
45
+ x: 目标位置的屏幕 X 坐标。
46
+ y: 目标位置的屏幕 Y 坐标。
47
+ move_duration: 鼠标移动过程的耗时(秒),默认为 0.1。
48
+
49
+ Returns:
50
+ Mouse 类本身,支持链式调用。
51
+ """
52
+ pydirectinput.moveTo(x=x, y=y, duration=move_duration)
53
+ return cls
54
+
55
+ @classmethod
56
+ def mouse_down(cls, x: int = None, y: int = None, button: str = LEFT):
57
+ """按下鼠标按键不松开。
58
+
59
+ Args:
60
+ x: 按下时的屏幕 X 坐标,为 None 时在当前位置按下。
61
+ y: 按下时的屏幕 Y 坐标,为 None 时在当前位置按下。
62
+ button: 鼠标按键,可选 'left'、'middle'、'right',默认为左键。
63
+
64
+ Returns:
65
+ Mouse 类本身,支持链式调用。
66
+ """
67
+ pydirectinput.mouseDown(x=x, y=y, button=button)
68
+ return cls
69
+
70
+ @classmethod
71
+ def mouse_up(cls, x: int = None, y: int = None, button: str = LEFT):
72
+ """松开已按下的鼠标按键。
73
+
74
+ Args:
75
+ x: 松开时的屏幕 X 坐标,为 None 时在当前位置松开。
76
+ y: 松开时的屏幕 Y 坐标,为 None 时在当前位置松开。
77
+ button: 鼠标按键,可选 'left'、'middle'、'right',默认为左键。
78
+
79
+ Returns:
80
+ Mouse 类本身,支持链式调用。
81
+ """
82
+ pydirectinput.mouseUp(x=x, y=y, button=button)
83
+ return cls
84
+
85
+ @classmethod
86
+ def click(cls,
87
+ x: Optional[int] = None,
88
+ y: Optional[int] = None,
89
+ clicks: int = 1,
90
+ interval: float = 0.1,
91
+ button: str = LEFT,
92
+ move_duration: float = 0.0,
93
+ duration: float = 0.05,
94
+ offset: int = 0):
95
+ """模拟鼠标点击操作。
96
+
97
+ 支持指定坐标、多次点击、随机偏移等功能。
98
+
99
+ Args:
100
+ x: 点击位置的屏幕 X 坐标,为 None 时在当前位置点击。
101
+ y: 点击位置的屏幕 Y 坐标,为 None 时在当前位置点击。
102
+ clicks: 点击次数,默认为 1。设为 2 可实现双击。
103
+ interval: 多次点击之间的间隔时间(秒),默认为 0.1。
104
+ button: 鼠标按键,可选 'left'、'middle'、'right',默认为左键。
105
+ move_duration: 移动到目标位置的耗时(秒),默认为 0.0(瞬移)。
106
+ duration: 按下与弹起之间的物理间隔(秒),增大此值可提高点击成功率,默认为 0.05。
107
+ offset: 随机偏移范围(像素),大于 0 时会在目标坐标附近随机偏移,用于模拟人类操作。
108
+
109
+ Returns:
110
+ Mouse 类本身,支持链式调用。
111
+ """
112
+ target_x, target_y = x, y
113
+
114
+ if offset > 0 and x is not None and y is not None:
115
+ target_x = max(0, x + random.randint(-offset, offset))
116
+ target_y = max(0, y + random.randint(-offset, offset))
117
+
118
+ if target_x is not None and target_y is not None:
119
+ cls.mouse_move(target_x, target_y, move_duration=move_duration)
120
+
121
+ for i in range(clicks):
122
+ cls.mouse_down(button=button)
123
+ time.sleep(max(0.01, duration))
124
+ cls.mouse_up(button=button)
125
+ if i < clicks - 1:
126
+ time.sleep(interval)
127
+ return cls
128
+
129
+ @classmethod
130
+ def long_press(cls, x: int = None, y: int = None, press_duration: float = 2.0, button: str = LEFT):
131
+ """模拟鼠标长按操作。
132
+
133
+ 在指定位置按下鼠标并保持一段时间后松开。
134
+
135
+ Args:
136
+ x: 长按位置的屏幕 X 坐标,为 None 时在当前位置操作。
137
+ y: 长按位置的屏幕 Y 坐标,为 None 时在当前位置操作。
138
+ press_duration: 按住的持续时间(秒),默认为 2.0。
139
+ button: 鼠标按键,可选 'left'、'middle'、'right',默认为左键。
140
+
141
+ Returns:
142
+ Mouse 类本身,支持链式调用。
143
+ """
144
+ if x is not None and y is not None:
145
+ cls.mouse_move(x, y, move_duration=0.0)
146
+
147
+ cls.mouse_down(button=button)
148
+ time.sleep(press_duration)
149
+ cls.mouse_up(button=button)
150
+ return cls
151
+
152
+ @classmethod
153
+ def scroll(cls, clicks: int, x: int = None, y: int = None):
154
+ """模拟鼠标滚轮滚动。
155
+
156
+ Args:
157
+ clicks: 滚动量,正数向上滚动,负数向下滚动。
158
+ x: 滚动时的屏幕 X 坐标,为 None 时在当前位置滚动。
159
+ y: 滚动时的屏幕 Y 坐标,为 None 时在当前位置滚动。
160
+
161
+ Returns:
162
+ Mouse 类本身,支持链式调用。
163
+ """
164
+ if x is not None and y is not None:
165
+ cls.mouse_move(x, y, move_duration=0.0)
166
+ pydirectinput.scroll(clicks)
167
+ return cls
168
+
169
+ @classmethod
170
+ def drag(cls, to_x: int, to_y: int, from_x: int = None, from_y: int = None, move_duration: float = 0.5):
171
+ """从指定位置拖拽鼠标到目标位置。
172
+
173
+ 使用左键进行拖拽操作。如果不指定起始位置,则从当前鼠标位置开始拖拽。
174
+
175
+ Args:
176
+ to_x: 拖拽目标的屏幕 X 坐标。
177
+ to_y: 拖拽目标的屏幕 Y 坐标。
178
+ from_x: 拖拽起始的屏幕 X 坐标,为 None 时从当前位置开始。
179
+ from_y: 拖拽起始的屏幕 Y 坐标,为 None 时从当前位置开始。
180
+ move_duration: 拖拽移动过程的耗时(秒),默认为 0.5。
181
+
182
+ Returns:
183
+ Mouse 类本身,支持链式调用。
184
+ """
185
+ if from_x is not None and from_y is not None:
186
+ cls.mouse_move(from_x, from_y, move_duration=0.0)
187
+
188
+ pydirectinput.dragTo(to_x, to_y, duration=move_duration, button=cls.LEFT)
189
+ return cls
190
+
191
+ @classmethod
192
+ def wait(cls, seconds: float):
193
+ """在鼠标操作链中插入等待。
194
+
195
+ Args:
196
+ seconds: 等待的时长(秒)。
197
+
198
+ Returns:
199
+ Mouse 类本身,支持链式调用。
200
+ """
201
+ time.sleep(seconds)
202
+ return cls
@@ -0,0 +1,16 @@
1
+ """许可证加密模块。
2
+
3
+ 提供基于 AES 加密的许可证验证功能,包括加密通信和数据填充工具。
4
+
5
+ Exports:
6
+ achttp: 加密 HTTP 通信模块。
7
+ AES: AES 加密算法。
8
+ pad: PKCS7 数据填充函数。
9
+ unpad: PKCS7 数据去填充函数。
10
+ """
11
+
12
+ from Crypto.Cipher import AES
13
+ from Crypto.Util.Padding import pad, unpad
14
+ from . import achttp
15
+
16
+ __all__ = ['achttp', "AES", "pad", "unpad"]
@@ -5,6 +5,15 @@ import shutil
5
5
 
6
6
 
7
7
  def auto_build(entry_file, project_name):
8
+ """使用 Nuitka 将 Python 项目打包为独立的 Windows 可执行文件。
9
+
10
+ 自动构造 Nuitka 编译命令,实时输出编译日志到控制台,
11
+ 并在完成后报告编译结果。
12
+
13
+ Args:
14
+ entry_file: Python 入口文件路径(如 'main.py')
15
+ project_name: 输出的可执行文件名称(不含 .exe 后缀)
16
+ """
8
17
  # 1. 确保入口文件存在
9
18
  if not os.path.exists(entry_file):
10
19
  print(f"❌ 错误: 找不到入口文件 {entry_file}")
@@ -1,3 +1,7 @@
1
+ """AScript Windows 应用模板的入口程序。
2
+
3
+ 演示如何使用 FloatScriptWindow 创建带有启动/停止控制的自动化脚本应用。
4
+ """
1
5
  import multiprocessing
2
6
  import time
3
7
  import sys
@@ -10,12 +14,10 @@ app = FloatScriptWindow(R.img("logo.ico"), title="我的程序", auto_start=True
10
14
 
11
15
  @app.on('start')
12
16
  def task_start():
13
- # ---------------------------------------------------------
14
- # 入口程序 (Entry Point)
15
- # ---------------------------------------------------------
16
- """
17
- [业务逻辑入口]
17
+ """业务逻辑入口函数。
18
+
18
19
  当用户点击启动按钮或触发自启动时,此函数将在独立的子进程中运行。
20
+ 在此函数中编写自动化任务的核心业务逻辑。
19
21
  """
20
22
  print(">>> [系统] 业务进程已建立,开始执行自动化任务...")
21
23
  i= 0
@@ -29,11 +31,11 @@ def task_start():
29
31
 
30
32
  @app.on('stop')
31
33
  def task_stop():
32
- """
33
- [善后处理回调]
34
- 当用户手动停止或任务结束时触发。
35
- 注意:您有约 3 秒的时间进行资源释放(如关闭文件、数据库断开等)。
36
- 即使此处存在死循环,系统也会在超时后强制回收进程资源。
34
+ """任务停止时的善后处理回调。
35
+
36
+ 当用户手动停止或任务结束时触发。可在此执行资源释放操作,
37
+ 如关闭文件句柄、断开数据库连接等。注意约有 3 秒的执行时限,
38
+ 超时后系统会强制回收进程资源。
37
39
  """
38
40
  print(">>> [系统] 接收到停止信号,正在释放系统资源...")
39
41
  # 模拟保存数据逻辑