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.
- {ascript-1.3.0 → ascript-1.3.2}/PKG-INFO +1 -1
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/__init__.py +4 -0
- ascript-1.3.2/ascript/windows/daos/screen.py +156 -0
- ascript-1.3.2/ascript/windows/hardware/keyboard.py +107 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/hardware/logitech_driver.py +62 -9
- ascript-1.3.2/ascript/windows/hardware/mouse.py +202 -0
- ascript-1.3.2/ascript/windows/license/__init__.py +16 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/resources/templates/build.py +9 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/resources/templates/windows/main.py +12 -10
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/screen/as_cv.py +128 -13
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/screen/find_colors.py +60 -9
- ascript-1.3.2/ascript/windows/screen/find_images.py +111 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/screen/ocr/rapidocr_hook.py +125 -19
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/screen/screen_core.py +30 -6
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/store/__init__.py +2 -1
- ascript-1.3.2/ascript/windows/system/device.py +355 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/system/easy_print.py +42 -3
- ascript-1.3.2/ascript/windows/system/env.py +506 -0
- ascript-1.3.2/ascript/windows/system/key_value.py +145 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/system/pip.py +36 -2
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/system/r.py +76 -9
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/system/runtime.py +16 -5
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/action.py +29 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/colors_tool.py +81 -4
- ascript-1.3.2/ascript/windows/tools/config.py +26 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/dumptool.py +9 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/eel_api.py +113 -14
- ascript-1.3.2/ascript/windows/tools/gpplug/plug.py +70 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/mouse_catch.py +29 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/plug_manager.py +10 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/ui/app_store_window.py +101 -10
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/ui/draw_window.py +58 -1
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/ui/flot_test.py +62 -1
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/ui/flot_window.py +132 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/ui/license_window.py +39 -1
- ascript-1.3.2/ascript/windows/ui/web_window.py +117 -0
- ascript-1.3.2/ascript/windows/utils/node_utils.py +20 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/utils/screen_utils.py +111 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/window/Selector.py +311 -28
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/window/Window.py +192 -32
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/window/launcher.py +58 -7
- {ascript-1.3.0 → ascript-1.3.2}/ascript.egg-info/PKG-INFO +1 -1
- {ascript-1.3.0 → ascript-1.3.2}/ascript.egg-info/SOURCES.txt +1 -70
- ascript-1.3.2/ascript.egg-info/top_level.txt +1 -0
- {ascript-1.3.0 → ascript-1.3.2}/pyproject.toml +66 -82
- ascript-1.3.0/ascript/android/__init__.py +0 -17
- ascript-1.3.0/ascript/android/action/__init__.py +0 -276
- ascript-1.3.0/ascript/android/action/ashid.py +0 -32
- ascript-1.3.0/ascript/android/cloud_control.py +0 -19
- ascript-1.3.0/ascript/android/data.py +0 -15
- ascript-1.3.0/ascript/android/media.py +0 -161
- ascript-1.3.0/ascript/android/node.py +0 -326
- ascript-1.3.0/ascript/android/plug.py +0 -9
- ascript-1.3.0/ascript/android/screen/__init__.py +0 -1010
- ascript-1.3.0/ascript/android/screen/ascv.py +0 -334
- ascript-1.3.0/ascript/android/screen/color_tools.py +0 -205
- ascript-1.3.0/ascript/android/screen/gp.py +0 -182
- ascript-1.3.0/ascript/android/screen/gp_tasks.py +0 -396
- ascript-1.3.0/ascript/android/screen/gp_tool.py +0 -117
- ascript-1.3.0/ascript/android/shizuku/__init__.py +0 -18
- ascript-1.3.0/ascript/android/system/__init__.py +0 -206
- ascript-1.3.0/ascript/android/ui.py +0 -199
- ascript-1.3.0/ascript/ios/action/__init__.py +0 -90
- ascript-1.3.0/ascript/ios/developer/api/__init__.py +0 -113
- ascript-1.3.0/ascript/ios/developer/api/api_2_android.py +0 -7
- ascript-1.3.0/ascript/ios/developer/api/api_code.py +0 -43
- ascript-1.3.0/ascript/ios/developer/api/api_file.py +0 -194
- ascript-1.3.0/ascript/ios/developer/api/api_label.py +0 -45
- ascript-1.3.0/ascript/ios/developer/api/api_module.py +0 -258
- ascript-1.3.0/ascript/ios/developer/api/api_node.py +0 -132
- ascript-1.3.0/ascript/ios/developer/api/api_screen.py +0 -108
- ascript-1.3.0/ascript/ios/developer/api/api_tool.py +0 -19
- ascript-1.3.0/ascript/ios/developer/api/dao.py +0 -55
- ascript-1.3.0/ascript/ios/developer/api/data.py +0 -191
- ascript-1.3.0/ascript/ios/developer/api/file_utils.py +0 -60
- ascript-1.3.0/ascript/ios/developer/api/label_utils.py +0 -275
- ascript-1.3.0/ascript/ios/developer/api/line_helper.py +0 -51
- ascript-1.3.0/ascript/ios/developer/api/oc.py +0 -519
- ascript-1.3.0/ascript/ios/developer/api/oc_gp.py +0 -307
- ascript-1.3.0/ascript/ios/developer/api/sp_utils.py +0 -62
- ascript-1.3.0/ascript/ios/developer/api/utils.py +0 -168
- ascript-1.3.0/ascript/ios/developer/api/wda_gp.py +0 -106
- ascript-1.3.0/ascript/ios/developer/ws.py +0 -101
- ascript-1.3.0/ascript/ios/ime.py +0 -13
- ascript-1.3.0/ascript/ios/media.py +0 -21
- ascript-1.3.0/ascript/ios/node.py +0 -326
- ascript-1.3.0/ascript/ios/screen/__init__.py +0 -434
- ascript-1.3.0/ascript/ios/screen/ascv.py +0 -420
- ascript-1.3.0/ascript/ios/screen/color_tools.py +0 -231
- ascript-1.3.0/ascript/ios/screen/dao.py +0 -0
- ascript-1.3.0/ascript/ios/screen/gp.py +0 -189
- ascript-1.3.0/ascript/ios/screen/yolov8.py +0 -47
- ascript-1.3.0/ascript/ios/system/__init__.py +0 -197
- ascript-1.3.0/ascript/ios/system/device.py +0 -36
- ascript-1.3.0/ascript/ios/ui.py +0 -37
- ascript-1.3.0/ascript/ios/wdapy/__init__.py +0 -9
- ascript-1.3.0/ascript/ios/wdapy/_alert.py +0 -49
- ascript-1.3.0/ascript/ios/wdapy/_base.py +0 -200
- ascript-1.3.0/ascript/ios/wdapy/_node.py +0 -443
- ascript-1.3.0/ascript/ios/wdapy/_proto.py +0 -56
- ascript-1.3.0/ascript/ios/wdapy/_types.py +0 -167
- ascript-1.3.0/ascript/ios/wdapy/_utils.py +0 -35
- ascript-1.3.0/ascript/ios/wdapy/_wdapy.py +0 -496
- ascript-1.3.0/ascript/ios/wdapy/_wrap.py +0 -26
- ascript-1.3.0/ascript/ios/wdapy/exceptions.py +0 -102
- ascript-1.3.0/ascript/ios/wdapy/xcui_element_types.py +0 -89
- ascript-1.3.0/ascript/windows/daos/screen.py +0 -58
- ascript-1.3.0/ascript/windows/hardware/keyboard.py +0 -89
- ascript-1.3.0/ascript/windows/hardware/mouse.py +0 -112
- ascript-1.3.0/ascript/windows/license/__init__.py +0 -6
- ascript-1.3.0/ascript/windows/screen/find_images.py +0 -71
- ascript-1.3.0/ascript/windows/system/device.py +0 -188
- ascript-1.3.0/ascript/windows/system/env.py +0 -287
- ascript-1.3.0/ascript/windows/system/key_value.py +0 -78
- ascript-1.3.0/ascript/windows/tools/config.py +0 -15
- ascript-1.3.0/ascript/windows/tools/gpplug/__init__.py +0 -0
- ascript-1.3.0/ascript/windows/tools/gpplug/plug.py +0 -41
- ascript-1.3.0/ascript/windows/ui/web_window.py +0 -68
- ascript-1.3.0/ascript/windows/utils/__init__.py +0 -0
- ascript-1.3.0/ascript/windows/utils/node_utils.py +0 -5
- ascript-1.3.0/ascript.egg-info/top_level.txt +0 -3
- ascript-1.3.0/docs/source/_build/_sources/autoapi/ascript/windows/client/tools/index.rst.txt +0 -100
- ascript-1.3.0/docs/source/_build/autoapi/ascript/windows/client/tools/index.html +0 -277
- ascript-1.3.0/docs/source/build_index.py +0 -69
- ascript-1.3.0/docs/source/conf.py +0 -49
- ascript-1.3.0/docs/source/doc_extractor.py +0 -247
- ascript-1.3.0/docs/source/generate_api_data.py +0 -131
- {ascript-1.3.0 → ascript-1.3.2}/MANIFEST.in +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/README.md +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/__init__.py +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/hooks/__init__.py +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/hooks/hook-ascript.py +0 -0
- {ascript-1.3.0/ascript/ios → ascript-1.3.2/ascript/windows/daos}/__init__.py +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/hardware/__init__.py +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/license/achttp.cp310-win_amd64.pyd +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/license/achttp.cp311-win_amd64.pyd +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/license/achttp.cp312-win_amd64.pyd +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/license/achttp.cp313-win_amd64.pyd +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/license/achttp.cp314-win_amd64.pyd +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/license/achttp.cp38-win_amd64.pyd +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/license/achttp.cp39-win_amd64.pyd +0 -0
- {ascript-1.3.0/ascript/ios/developer → ascript-1.3.2/ascript/windows/media}/__init__.py +0 -0
- {ascript-1.3.0/ascript/windows/daos → ascript-1.3.2/ascript/windows/resources}/__init__.py +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/resources/libs/logitech/x64/LogitechGkeyEnginesWrapper.dll +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/resources/libs/logitech/x86/LogitechGkeyEnginesWrapper.dll +0 -0
- {ascript-1.3.0/ascript/windows/media → ascript-1.3.2/ascript/windows/resources/templates}/__init__.py +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/resources/templates/__init__py.win.template +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/resources/templates/build.as.win.template +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/resources/templates/logo_windows.ico +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/resources/templates/windows/pyproject.toml +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/resources/templates/windows/res/img/logo.ico +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/screen/__init__.py +0 -0
- {ascript-1.3.0/ascript/windows/resources → ascript-1.3.2/ascript/windows/screen/ocr}/__init__.py +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/system/__init__.py +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/system/exception/__init__.py +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__init__.py +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/__init__.cpython-310.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/__init__.cpython-312.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/__init__.cpython-313.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/__init__.cpython-39.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/action.cpython-310.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/action.cpython-312.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/action.cpython-313.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/action.cpython-39.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/colors_tool.cpython-310.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/colors_tool.cpython-312.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/colors_tool.cpython-313.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/colors_tool.cpython-39.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/config.cpython-310.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/config.cpython-312.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/config.cpython-313.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/config.cpython-39.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/dumptool.cpython-310.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/dumptool.cpython-312.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/dumptool.cpython-313.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/dumptool.cpython-39.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/eel_api.cpython-310.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/eel_api.cpython-312.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/eel_api.cpython-313.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/eel_api.cpython-39.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/mouse_catch.cpython-310.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/mouse_catch.cpython-312.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/mouse_catch.cpython-313.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/mouse_catch.cpython-39.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/plug_manager.cpython-310.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/plug_manager.cpython-312.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/plug_manager.cpython-313.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/__pycache__/plug_manager.cpython-39.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/action.json +0 -0
- {ascript-1.3.0/ascript/windows/resources/templates → ascript-1.3.2/ascript/windows/tools/gpplug}/__init__.py +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/gpplug/__pycache__/__init__.cpython-310.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/gpplug/__pycache__/__init__.cpython-312.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/gpplug/__pycache__/__init__.cpython-313.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/gpplug/__pycache__/__init__.cpython-39.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/gpplug/__pycache__/plug.cpython-310.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/gpplug/__pycache__/plug.cpython-312.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/gpplug/__pycache__/plug.cpython-313.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/gpplug/__pycache__/plug.cpython-39.pyc +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/app_store_window.html +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/colors.html +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/css/screen.css +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/css/viewtree.css +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/flot_control.html +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/img/ico/favicon.png +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/img/ico/paintpalette.png +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/img/svg/find_colors.svg +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/img/svg/find_images.svg +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/img/svg/illustration-6.svg +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/img/svg/img_default.svg +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/img/svg/ocr.svg +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/js/screen/colors.js +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/js/screen/gp_plug.js +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/js/screen/image_mouse.js +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/js/screen/img_view.js +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/js/screen/plug.js +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/js/screen/screen.js +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/js/screen/screen_api.js +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/js/screen/screen_maker.js +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/js/utils/map.js +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/js/utils/upload.js +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/js/viewtree/niv_js.js +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/js/viewtree/vtree.js +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/bootstrap/css/bootstrap.min.css +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/bootstrap/js/bootstrap.bundle.min.js +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/bootstrap-icons/0-circle.svg +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/bootstrap-icons/0-square.svg +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/bootstrap-icons/font/bootstrap-icons.css +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/bootstrap-icons/font/bootstrap-icons.json +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/bootstrap-icons/font/bootstrap-icons.min.css +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/bootstrap-icons/font/bootstrap-icons.scss +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/bootstrap-icons/font/fonts/bootstrap-icons.woff +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/bootstrap-icons/font/fonts/bootstrap-icons.woff2 +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/feather-icons/dist/feather.min.js +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/feather-icons/dist/icons.json +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery/core.js +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery/jquery.js +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery/jquery.min.js +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery/jquery.min.js.zip +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery/jquery.slim.js +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery/jquery.slim.min.js +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-menu/jquery.contextMenu.js +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-menu/jquery.contextMenu.min.css +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-zTree/css/zTreeStyle.css +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-zTree/img/diy/1_close.png +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-zTree/img/diy/1_open.png +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-zTree/img/diy/2.png +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-zTree/img/diy/3.png +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-zTree/img/diy/4.png +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-zTree/img/diy/5.png +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-zTree/img/diy/6.png +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-zTree/img/diy/7.png +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-zTree/img/diy/8.png +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-zTree/img/diy/9.png +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-zTree/img/line_conn.gif +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-zTree/img/loading.gif +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-zTree/img/tree-node-btn.png +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-zTree/img/zTreeStandard.gif +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-zTree/img/zTreeStandard.png +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/jquery-zTree/js/jquery.ztree.all.min.js +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/css/jquery.treeview.css +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/img/file.png +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/img/ico_loading.png +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/img/icon4.png +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/img/icon5.png +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/img/icon6.png +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/img/py.png +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/img/treeview-black-line.gif +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/img/treeview-black.gif +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/img/treeview-default-line.gif +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/img/treeview-default.gif +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/img/treeview-famfamfam-line.gif +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/img/treeview-famfamfam.gif +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/img/treeview-gray-line.gif +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/img/treeview-gray.gif +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/img/treeview-red-line.gif +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/img/treeview-red.gif +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/js/jquery.treeview.edit.js +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/libs/treeview/js/jquery.treeview.js +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/license_window.html +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/plugs/a.html +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/plugs/demo.html +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/plugs/find_colors.html +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/plugs/find_images.html +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/plugs/rapidocr.html +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/tools/web/vtree.html +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/ui/__init__.py +0 -0
- {ascript-1.3.0/ascript/windows/screen/ocr → ascript-1.3.2/ascript/windows/utils}/__init__.py +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript/windows/window/__init__.py +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript.egg-info/dependency_links.txt +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/ascript.egg-info/requires.txt +0 -0
- {ascript-1.3.0 → ascript-1.3.2}/setup.cfg +0 -0
|
@@ -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
|
-
"""
|
|
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
|
-
"""
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
36
|
-
|
|
34
|
+
"""任务停止时的善后处理回调。
|
|
35
|
+
|
|
36
|
+
当用户手动停止或任务结束时触发。可在此执行资源释放操作,
|
|
37
|
+
如关闭文件句柄、断开数据库连接等。注意约有 3 秒的执行时限,
|
|
38
|
+
超时后系统会强制回收进程资源。
|
|
37
39
|
"""
|
|
38
40
|
print(">>> [系统] 接收到停止信号,正在释放系统资源...")
|
|
39
41
|
# 模拟保存数据逻辑
|