pyxllib 0.3.197__py3-none-any.whl → 0.3.200__py3-none-any.whl
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.
- pyxllib/__init__.py +21 -21
- pyxllib/algo/__init__.py +8 -8
- pyxllib/algo/disjoint.py +54 -54
- pyxllib/algo/geo.py +541 -541
- pyxllib/algo/intervals.py +964 -964
- pyxllib/algo/matcher.py +389 -389
- pyxllib/algo/newbie.py +166 -166
- pyxllib/algo/pupil.py +629 -629
- pyxllib/algo/shapelylib.py +67 -67
- pyxllib/algo/specialist.py +241 -241
- pyxllib/algo/stat.py +494 -494
- pyxllib/algo/treelib.py +149 -149
- pyxllib/algo/unitlib.py +66 -66
- pyxllib/autogui/__init__.py +5 -5
- pyxllib/autogui/activewin.py +246 -246
- pyxllib/autogui/all.py +9 -9
- pyxllib/autogui/autogui.py +852 -852
- pyxllib/autogui/uiautolib.py +362 -362
- pyxllib/autogui/virtualkey.py +102 -102
- pyxllib/autogui/wechat.py +827 -827
- pyxllib/autogui/wechat_msg.py +421 -421
- pyxllib/autogui/wxautolib.py +84 -84
- pyxllib/cv/__init__.py +5 -5
- pyxllib/cv/expert.py +267 -267
- pyxllib/cv/imfile.py +159 -159
- pyxllib/cv/imhash.py +39 -39
- pyxllib/cv/pupil.py +9 -9
- pyxllib/cv/rgbfmt.py +1525 -1525
- pyxllib/cv/slidercaptcha.py +137 -137
- pyxllib/cv/trackbartools.py +251 -251
- pyxllib/cv/xlcvlib.py +1040 -1040
- pyxllib/cv/xlpillib.py +423 -423
- pyxllib/data/echarts.py +240 -240
- pyxllib/data/jsonlib.py +89 -89
- pyxllib/data/oss.py +72 -72
- pyxllib/data/pglib.py +1127 -1127
- pyxllib/data/sqlite.py +568 -568
- pyxllib/data/sqllib.py +297 -297
- pyxllib/ext/JLineViewer.py +505 -505
- pyxllib/ext/__init__.py +6 -6
- pyxllib/ext/demolib.py +246 -246
- pyxllib/ext/drissionlib.py +277 -277
- pyxllib/ext/kq5034lib.py +12 -12
- pyxllib/ext/old.py +663 -663
- pyxllib/ext/qt.py +449 -449
- pyxllib/ext/robustprocfile.py +497 -497
- pyxllib/ext/seleniumlib.py +76 -76
- pyxllib/ext/tk.py +173 -173
- pyxllib/ext/unixlib.py +827 -827
- pyxllib/ext/utools.py +351 -351
- pyxllib/ext/webhook.py +124 -119
- pyxllib/ext/win32lib.py +40 -40
- pyxllib/ext/wjxlib.py +88 -88
- pyxllib/ext/wpsapi.py +124 -124
- pyxllib/ext/xlwork.py +9 -9
- pyxllib/ext/yuquelib.py +1105 -1105
- pyxllib/file/__init__.py +17 -17
- pyxllib/file/docxlib.py +761 -761
- pyxllib/file/gitlib.py +309 -309
- pyxllib/file/libreoffice.py +165 -165
- pyxllib/file/movielib.py +148 -148
- pyxllib/file/newbie.py +10 -10
- pyxllib/file/onenotelib.py +1469 -1469
- pyxllib/file/packlib/__init__.py +330 -330
- pyxllib/file/packlib/zipfile.py +2441 -2441
- pyxllib/file/pdflib.py +426 -426
- pyxllib/file/pupil.py +185 -185
- pyxllib/file/specialist/__init__.py +685 -685
- pyxllib/file/specialist/dirlib.py +799 -799
- pyxllib/file/specialist/download.py +193 -193
- pyxllib/file/specialist/filelib.py +2829 -2829
- pyxllib/file/xlsxlib.py +3131 -3131
- pyxllib/file/xlsyncfile.py +341 -341
- pyxllib/prog/__init__.py +5 -5
- pyxllib/prog/cachetools.py +64 -64
- pyxllib/prog/deprecatedlib.py +233 -233
- pyxllib/prog/filelock.py +42 -42
- pyxllib/prog/ipyexec.py +253 -253
- pyxllib/prog/multiprogs.py +940 -940
- pyxllib/prog/newbie.py +451 -451
- pyxllib/prog/pupil.py +1197 -1197
- pyxllib/prog/sitepackages.py +33 -33
- pyxllib/prog/specialist/__init__.py +391 -391
- pyxllib/prog/specialist/bc.py +203 -203
- pyxllib/prog/specialist/browser.py +497 -497
- pyxllib/prog/specialist/common.py +347 -347
- pyxllib/prog/specialist/datetime.py +198 -198
- pyxllib/prog/specialist/tictoc.py +240 -240
- pyxllib/prog/specialist/xllog.py +180 -180
- pyxllib/prog/xlosenv.py +108 -108
- pyxllib/stdlib/__init__.py +17 -17
- pyxllib/stdlib/tablepyxl/__init__.py +10 -10
- pyxllib/stdlib/tablepyxl/style.py +303 -303
- pyxllib/stdlib/tablepyxl/tablepyxl.py +130 -130
- pyxllib/text/__init__.py +8 -8
- pyxllib/text/ahocorasick.py +39 -39
- pyxllib/text/airscript.js +744 -744
- pyxllib/text/charclasslib.py +121 -121
- pyxllib/text/jiebalib.py +267 -267
- pyxllib/text/jinjalib.py +32 -32
- pyxllib/text/jsa_ai_prompt.md +271 -271
- pyxllib/text/jscode.py +922 -922
- pyxllib/text/latex/__init__.py +158 -158
- pyxllib/text/levenshtein.py +303 -303
- pyxllib/text/nestenv.py +1215 -1215
- pyxllib/text/newbie.py +300 -300
- pyxllib/text/pupil/__init__.py +8 -8
- pyxllib/text/pupil/common.py +1121 -1121
- pyxllib/text/pupil/xlalign.py +326 -326
- pyxllib/text/pycode.py +47 -47
- pyxllib/text/specialist/__init__.py +8 -8
- pyxllib/text/specialist/common.py +112 -112
- pyxllib/text/specialist/ptag.py +186 -186
- pyxllib/text/spellchecker.py +172 -172
- pyxllib/text/templates/echart_base.html +10 -10
- pyxllib/text/templates/highlight_code.html +16 -16
- pyxllib/text/templates/latex_editor.html +102 -102
- pyxllib/text/vbacode.py +17 -17
- pyxllib/text/xmllib.py +747 -747
- pyxllib/xl.py +42 -39
- pyxllib/xlcv.py +17 -17
- {pyxllib-0.3.197.dist-info → pyxllib-0.3.200.dist-info}/METADATA +1 -1
- pyxllib-0.3.200.dist-info/RECORD +126 -0
- {pyxllib-0.3.197.dist-info → pyxllib-0.3.200.dist-info}/licenses/LICENSE +190 -190
- pyxllib-0.3.197.dist-info/RECORD +0 -126
- {pyxllib-0.3.197.dist-info → pyxllib-0.3.200.dist-info}/WHEEL +0 -0
pyxllib/autogui/virtualkey.py
CHANGED
@@ -1,102 +1,102 @@
|
|
1
|
-
#!/usr/bin/env python3
|
2
|
-
# -*- coding: utf-8 -*-
|
3
|
-
# @Author : 陈坤泽
|
4
|
-
# @Email : 877362867@qq.com
|
5
|
-
# @Date : 2021/08/01 15:28
|
6
|
-
|
7
|
-
import time
|
8
|
-
import sys
|
9
|
-
|
10
|
-
____press_key = """
|
11
|
-
TODO 有待进一步封装整理
|
12
|
-
|
13
|
-
简化按键映射、简化PressKey和ReleaseKey过程
|
14
|
-
https://www.icode9.com/content-1-787701.html
|
15
|
-
|
16
|
-
简洁版可以使用: https://pypi.org/project/VirtualKey/
|
17
|
-
看源码原理基本相同,但实测还是有失灵的时候(HD3_Launcher.exe打开的游戏无法接受按键信息)
|
18
|
-
所以我还是要自己留一套版本
|
19
|
-
"""
|
20
|
-
|
21
|
-
if sys.platform == 'win32':
|
22
|
-
import ctypes
|
23
|
-
|
24
|
-
KEY_MAPPING = {'num1': 2, 'num2': 3, 'num3': 4, 'num4': 5, 'num5': 6,
|
25
|
-
'num6': 7, 'num7': 8, 'num8': 9, 'num9': 10, 'num0': 11,
|
26
|
-
'escape': 1, 'equal': 13, 'backspace': 14, 'tab': 15, 'q': 16,
|
27
|
-
'w': 17, 'e': 18, 'r': 19, 't': 20, 'y': 21,
|
28
|
-
'u': 22, 'i': 23, 'o': 24, 'p': 25, 'enter': 28,
|
29
|
-
'lcontrol': 29, 'a': 30, 's': 31, 'd': 32, 'f': 33,
|
30
|
-
'g': 34, 'h': 35, 'j': 36, 'k': 37, 'l': 38,
|
31
|
-
'z': 44, 'x': 45, 'c': 46, 'v': 47, 'b': 48,
|
32
|
-
'n': 49, 'm': 50, 'shift': 54, 'multiply': 55, 'space': 57,
|
33
|
-
'capital': 58, 'f1': 59, 'f2': 60, 'f3': 61, 'f4': 62,
|
34
|
-
'f5': 63, 'f6': 64, 'f7': 65, 'f8': 66, 'f9': 67,
|
35
|
-
'f10': 68, 'numlock': 69, 'f11': 87, 'f12': 88, 'divide': 181,
|
36
|
-
'home': 199, 'up': 200, 'prior': 201, 'left': 203, 'right': 205,
|
37
|
-
'end': 207, 'down': 208, 'next': 209, 'insert': 210, 'delete': 211}
|
38
|
-
|
39
|
-
SendInput = ctypes.windll.user32.SendInput
|
40
|
-
|
41
|
-
# C struct redefinitions
|
42
|
-
PUL = ctypes.POINTER(ctypes.c_ulong)
|
43
|
-
|
44
|
-
|
45
|
-
class KeyBdInput(ctypes.Structure):
|
46
|
-
_fields_ = [("wVk", ctypes.c_ushort),
|
47
|
-
("wScan", ctypes.c_ushort),
|
48
|
-
("dwFlags", ctypes.c_ulong),
|
49
|
-
("time", ctypes.c_ulong),
|
50
|
-
("dwExtraInfo", PUL)]
|
51
|
-
|
52
|
-
|
53
|
-
class HardwareInput(ctypes.Structure):
|
54
|
-
_fields_ = [("uMsg", ctypes.c_ulong),
|
55
|
-
("wParamL", ctypes.c_short),
|
56
|
-
("wParamH", ctypes.c_ushort)]
|
57
|
-
|
58
|
-
|
59
|
-
class MouseInput(ctypes.Structure):
|
60
|
-
_fields_ = [("dx", ctypes.c_long),
|
61
|
-
("dy", ctypes.c_long),
|
62
|
-
("mouseData", ctypes.c_ulong),
|
63
|
-
("dwFlags", ctypes.c_ulong),
|
64
|
-
("time", ctypes.c_ulong),
|
65
|
-
("dwExtraInfo", PUL)]
|
66
|
-
|
67
|
-
|
68
|
-
class Input_I(ctypes.Union):
|
69
|
-
_fields_ = [("ki", KeyBdInput),
|
70
|
-
("mi", MouseInput),
|
71
|
-
("hi", HardwareInput)]
|
72
|
-
|
73
|
-
|
74
|
-
class Input(ctypes.Structure):
|
75
|
-
_fields_ = [("type", ctypes.c_ulong),
|
76
|
-
("ii", Input_I)]
|
77
|
-
|
78
|
-
|
79
|
-
# Actuals Functions
|
80
|
-
|
81
|
-
def PressKey(hexKeyCode):
|
82
|
-
extra = ctypes.c_ulong(0)
|
83
|
-
ii_ = Input_I()
|
84
|
-
ii_.ki = KeyBdInput(0, hexKeyCode, 0x0008, 0, ctypes.pointer(extra))
|
85
|
-
x = Input(ctypes.c_ulong(1), ii_)
|
86
|
-
ctypes.windll.user32.SendInput(1, ctypes.pointer(x), ctypes.sizeof(x))
|
87
|
-
|
88
|
-
|
89
|
-
def ReleaseKey(hexKeyCode):
|
90
|
-
extra = ctypes.c_ulong(0)
|
91
|
-
ii_ = Input_I()
|
92
|
-
ii_.ki = KeyBdInput(0, hexKeyCode, 0x0008 | 0x0002, 0, ctypes.pointer(extra))
|
93
|
-
x = Input(ctypes.c_ulong(1), ii_)
|
94
|
-
ctypes.windll.user32.SendInput(1, ctypes.pointer(x), ctypes.sizeof(x))
|
95
|
-
|
96
|
-
|
97
|
-
def down_up(ch, t=0.5):
|
98
|
-
ch = KEY_MAPPING[ch]
|
99
|
-
PressKey(ch)
|
100
|
-
time.sleep(t)
|
101
|
-
ReleaseKey(ch)
|
102
|
-
return 1
|
1
|
+
#!/usr/bin/env python3
|
2
|
+
# -*- coding: utf-8 -*-
|
3
|
+
# @Author : 陈坤泽
|
4
|
+
# @Email : 877362867@qq.com
|
5
|
+
# @Date : 2021/08/01 15:28
|
6
|
+
|
7
|
+
import time
|
8
|
+
import sys
|
9
|
+
|
10
|
+
____press_key = """
|
11
|
+
TODO 有待进一步封装整理
|
12
|
+
|
13
|
+
简化按键映射、简化PressKey和ReleaseKey过程
|
14
|
+
https://www.icode9.com/content-1-787701.html
|
15
|
+
|
16
|
+
简洁版可以使用: https://pypi.org/project/VirtualKey/
|
17
|
+
看源码原理基本相同,但实测还是有失灵的时候(HD3_Launcher.exe打开的游戏无法接受按键信息)
|
18
|
+
所以我还是要自己留一套版本
|
19
|
+
"""
|
20
|
+
|
21
|
+
if sys.platform == 'win32':
|
22
|
+
import ctypes
|
23
|
+
|
24
|
+
KEY_MAPPING = {'num1': 2, 'num2': 3, 'num3': 4, 'num4': 5, 'num5': 6,
|
25
|
+
'num6': 7, 'num7': 8, 'num8': 9, 'num9': 10, 'num0': 11,
|
26
|
+
'escape': 1, 'equal': 13, 'backspace': 14, 'tab': 15, 'q': 16,
|
27
|
+
'w': 17, 'e': 18, 'r': 19, 't': 20, 'y': 21,
|
28
|
+
'u': 22, 'i': 23, 'o': 24, 'p': 25, 'enter': 28,
|
29
|
+
'lcontrol': 29, 'a': 30, 's': 31, 'd': 32, 'f': 33,
|
30
|
+
'g': 34, 'h': 35, 'j': 36, 'k': 37, 'l': 38,
|
31
|
+
'z': 44, 'x': 45, 'c': 46, 'v': 47, 'b': 48,
|
32
|
+
'n': 49, 'm': 50, 'shift': 54, 'multiply': 55, 'space': 57,
|
33
|
+
'capital': 58, 'f1': 59, 'f2': 60, 'f3': 61, 'f4': 62,
|
34
|
+
'f5': 63, 'f6': 64, 'f7': 65, 'f8': 66, 'f9': 67,
|
35
|
+
'f10': 68, 'numlock': 69, 'f11': 87, 'f12': 88, 'divide': 181,
|
36
|
+
'home': 199, 'up': 200, 'prior': 201, 'left': 203, 'right': 205,
|
37
|
+
'end': 207, 'down': 208, 'next': 209, 'insert': 210, 'delete': 211}
|
38
|
+
|
39
|
+
SendInput = ctypes.windll.user32.SendInput
|
40
|
+
|
41
|
+
# C struct redefinitions
|
42
|
+
PUL = ctypes.POINTER(ctypes.c_ulong)
|
43
|
+
|
44
|
+
|
45
|
+
class KeyBdInput(ctypes.Structure):
|
46
|
+
_fields_ = [("wVk", ctypes.c_ushort),
|
47
|
+
("wScan", ctypes.c_ushort),
|
48
|
+
("dwFlags", ctypes.c_ulong),
|
49
|
+
("time", ctypes.c_ulong),
|
50
|
+
("dwExtraInfo", PUL)]
|
51
|
+
|
52
|
+
|
53
|
+
class HardwareInput(ctypes.Structure):
|
54
|
+
_fields_ = [("uMsg", ctypes.c_ulong),
|
55
|
+
("wParamL", ctypes.c_short),
|
56
|
+
("wParamH", ctypes.c_ushort)]
|
57
|
+
|
58
|
+
|
59
|
+
class MouseInput(ctypes.Structure):
|
60
|
+
_fields_ = [("dx", ctypes.c_long),
|
61
|
+
("dy", ctypes.c_long),
|
62
|
+
("mouseData", ctypes.c_ulong),
|
63
|
+
("dwFlags", ctypes.c_ulong),
|
64
|
+
("time", ctypes.c_ulong),
|
65
|
+
("dwExtraInfo", PUL)]
|
66
|
+
|
67
|
+
|
68
|
+
class Input_I(ctypes.Union):
|
69
|
+
_fields_ = [("ki", KeyBdInput),
|
70
|
+
("mi", MouseInput),
|
71
|
+
("hi", HardwareInput)]
|
72
|
+
|
73
|
+
|
74
|
+
class Input(ctypes.Structure):
|
75
|
+
_fields_ = [("type", ctypes.c_ulong),
|
76
|
+
("ii", Input_I)]
|
77
|
+
|
78
|
+
|
79
|
+
# Actuals Functions
|
80
|
+
|
81
|
+
def PressKey(hexKeyCode):
|
82
|
+
extra = ctypes.c_ulong(0)
|
83
|
+
ii_ = Input_I()
|
84
|
+
ii_.ki = KeyBdInput(0, hexKeyCode, 0x0008, 0, ctypes.pointer(extra))
|
85
|
+
x = Input(ctypes.c_ulong(1), ii_)
|
86
|
+
ctypes.windll.user32.SendInput(1, ctypes.pointer(x), ctypes.sizeof(x))
|
87
|
+
|
88
|
+
|
89
|
+
def ReleaseKey(hexKeyCode):
|
90
|
+
extra = ctypes.c_ulong(0)
|
91
|
+
ii_ = Input_I()
|
92
|
+
ii_.ki = KeyBdInput(0, hexKeyCode, 0x0008 | 0x0002, 0, ctypes.pointer(extra))
|
93
|
+
x = Input(ctypes.c_ulong(1), ii_)
|
94
|
+
ctypes.windll.user32.SendInput(1, ctypes.pointer(x), ctypes.sizeof(x))
|
95
|
+
|
96
|
+
|
97
|
+
def down_up(ch, t=0.5):
|
98
|
+
ch = KEY_MAPPING[ch]
|
99
|
+
PressKey(ch)
|
100
|
+
time.sleep(t)
|
101
|
+
ReleaseKey(ch)
|
102
|
+
return 1
|