appium-novawindows2-driver 0.1.1
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.
- package/.github/ISSUE_TEMPLATE/bug_report.yml +97 -0
- package/.github/ISSUE_TEMPLATE/feature_request.yml +33 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +28 -0
- package/.github/workflows/lint-build.yml +30 -0
- package/.github/workflows/release.yml +39 -0
- package/.releaserc +41 -0
- package/CHANGELOG.md +33 -0
- package/LICENSE +202 -0
- package/README.md +557 -0
- package/build/eslint.config.d.mts +3 -0
- package/build/eslint.config.d.mts.map +1 -0
- package/build/eslint.config.mjs +6 -0
- package/build/eslint.config.mjs.map +1 -0
- package/build/lib/commands/actions.d.ts +11 -0
- package/build/lib/commands/actions.d.ts.map +1 -0
- package/build/lib/commands/actions.js +212 -0
- package/build/lib/commands/actions.js.map +1 -0
- package/build/lib/commands/app.d.ts +12 -0
- package/build/lib/commands/app.d.ts.map +1 -0
- package/build/lib/commands/app.js +195 -0
- package/build/lib/commands/app.js.map +1 -0
- package/build/lib/commands/device.d.ts +3 -0
- package/build/lib/commands/device.d.ts.map +1 -0
- package/build/lib/commands/device.js +31 -0
- package/build/lib/commands/device.js.map +1 -0
- package/build/lib/commands/element.d.ts +15 -0
- package/build/lib/commands/element.d.ts.map +1 -0
- package/build/lib/commands/element.js +213 -0
- package/build/lib/commands/element.js.map +1 -0
- package/build/lib/commands/extension.d.ts +87 -0
- package/build/lib/commands/extension.d.ts.map +1 -0
- package/build/lib/commands/extension.js +511 -0
- package/build/lib/commands/extension.js.map +1 -0
- package/build/lib/commands/functions.d.ts +3 -0
- package/build/lib/commands/functions.d.ts.map +1 -0
- package/build/lib/commands/functions.js +194 -0
- package/build/lib/commands/functions.js.map +1 -0
- package/build/lib/commands/index.d.ts +126 -0
- package/build/lib/commands/index.d.ts.map +1 -0
- package/build/lib/commands/index.js +54 -0
- package/build/lib/commands/index.js.map +1 -0
- package/build/lib/commands/powershell.d.ts +6 -0
- package/build/lib/commands/powershell.d.ts.map +1 -0
- package/build/lib/commands/powershell.js +204 -0
- package/build/lib/commands/powershell.js.map +1 -0
- package/build/lib/commands/system.d.ts +4 -0
- package/build/lib/commands/system.d.ts.map +1 -0
- package/build/lib/commands/system.js +8 -0
- package/build/lib/commands/system.js.map +1 -0
- package/build/lib/constants.d.ts +2 -0
- package/build/lib/constants.d.ts.map +1 -0
- package/build/lib/constants.js +5 -0
- package/build/lib/constants.js.map +1 -0
- package/build/lib/constraints.d.ts +40 -0
- package/build/lib/constraints.d.ts.map +1 -0
- package/build/lib/constraints.js +42 -0
- package/build/lib/constraints.js.map +1 -0
- package/build/lib/driver.d.ts +33 -0
- package/build/lib/driver.d.ts.map +1 -0
- package/build/lib/driver.js +181 -0
- package/build/lib/driver.js.map +1 -0
- package/build/lib/enums.d.ts +89 -0
- package/build/lib/enums.d.ts.map +1 -0
- package/build/lib/enums.js +83 -0
- package/build/lib/enums.js.map +1 -0
- package/build/lib/powershell/common.d.ts +39 -0
- package/build/lib/powershell/common.d.ts.map +1 -0
- package/build/lib/powershell/common.js +121 -0
- package/build/lib/powershell/common.js.map +1 -0
- package/build/lib/powershell/conditions.d.ts +24 -0
- package/build/lib/powershell/conditions.d.ts.map +1 -0
- package/build/lib/powershell/conditions.js +131 -0
- package/build/lib/powershell/conditions.js.map +1 -0
- package/build/lib/powershell/converter.d.ts +3 -0
- package/build/lib/powershell/converter.d.ts.map +1 -0
- package/build/lib/powershell/converter.js +273 -0
- package/build/lib/powershell/converter.js.map +1 -0
- package/build/lib/powershell/core.d.ts +8 -0
- package/build/lib/powershell/core.d.ts.map +1 -0
- package/build/lib/powershell/core.js +30 -0
- package/build/lib/powershell/core.js.map +1 -0
- package/build/lib/powershell/elements.d.ts +68 -0
- package/build/lib/powershell/elements.d.ts.map +1 -0
- package/build/lib/powershell/elements.js +515 -0
- package/build/lib/powershell/elements.js.map +1 -0
- package/build/lib/powershell/index.d.ts +8 -0
- package/build/lib/powershell/index.d.ts.map +1 -0
- package/build/lib/powershell/index.js +24 -0
- package/build/lib/powershell/index.js.map +1 -0
- package/build/lib/powershell/regex.d.ts +19 -0
- package/build/lib/powershell/regex.d.ts.map +1 -0
- package/build/lib/powershell/regex.js +68 -0
- package/build/lib/powershell/regex.js.map +1 -0
- package/build/lib/powershell/types.d.ts +155 -0
- package/build/lib/powershell/types.d.ts.map +1 -0
- package/build/lib/powershell/types.js +141 -0
- package/build/lib/powershell/types.js.map +1 -0
- package/build/lib/util.d.ts +10 -0
- package/build/lib/util.d.ts.map +1 -0
- package/build/lib/util.js +51 -0
- package/build/lib/util.js.map +1 -0
- package/build/lib/winapi/types/index.d.ts +8 -0
- package/build/lib/winapi/types/index.d.ts.map +1 -0
- package/build/lib/winapi/types/index.js +24 -0
- package/build/lib/winapi/types/index.js.map +1 -0
- package/build/lib/winapi/types/input.d.ts +11 -0
- package/build/lib/winapi/types/input.d.ts.map +1 -0
- package/build/lib/winapi/types/input.js +12 -0
- package/build/lib/winapi/types/input.js.map +1 -0
- package/build/lib/winapi/types/keyeventf.d.ts +13 -0
- package/build/lib/winapi/types/keyeventf.d.ts.map +1 -0
- package/build/lib/winapi/types/keyeventf.js +14 -0
- package/build/lib/winapi/types/keyeventf.js.map +1 -0
- package/build/lib/winapi/types/mouseeventf.d.ts +34 -0
- package/build/lib/winapi/types/mouseeventf.d.ts.map +1 -0
- package/build/lib/winapi/types/mouseeventf.js +37 -0
- package/build/lib/winapi/types/mouseeventf.js.map +1 -0
- package/build/lib/winapi/types/scancode.d.ts +95 -0
- package/build/lib/winapi/types/scancode.d.ts.map +1 -0
- package/build/lib/winapi/types/scancode.js +96 -0
- package/build/lib/winapi/types/scancode.js.map +1 -0
- package/build/lib/winapi/types/systemmetric.d.ts +214 -0
- package/build/lib/winapi/types/systemmetric.d.ts.map +1 -0
- package/build/lib/winapi/types/systemmetric.js +215 -0
- package/build/lib/winapi/types/systemmetric.js.map +1 -0
- package/build/lib/winapi/types/virtualkey.d.ts +353 -0
- package/build/lib/winapi/types/virtualkey.d.ts.map +1 -0
- package/build/lib/winapi/types/virtualkey.js +354 -0
- package/build/lib/winapi/types/virtualkey.js.map +1 -0
- package/build/lib/winapi/types/xmousebutton.d.ts +7 -0
- package/build/lib/winapi/types/xmousebutton.d.ts.map +1 -0
- package/build/lib/winapi/types/xmousebutton.js +8 -0
- package/build/lib/winapi/types/xmousebutton.js.map +1 -0
- package/build/lib/winapi/user32.d.ts +56 -0
- package/build/lib/winapi/user32.d.ts.map +1 -0
- package/build/lib/winapi/user32.js +591 -0
- package/build/lib/winapi/user32.js.map +1 -0
- package/build/lib/xpath/core.d.ts +8 -0
- package/build/lib/xpath/core.d.ts.map +1 -0
- package/build/lib/xpath/core.js +593 -0
- package/build/lib/xpath/core.js.map +1 -0
- package/build/lib/xpath/functions.d.ts +4 -0
- package/build/lib/xpath/functions.d.ts.map +1 -0
- package/build/lib/xpath/functions.js +271 -0
- package/build/lib/xpath/functions.js.map +1 -0
- package/build/lib/xpath/index.d.ts +3 -0
- package/build/lib/xpath/index.d.ts.map +1 -0
- package/build/lib/xpath/index.js +19 -0
- package/build/lib/xpath/index.js.map +1 -0
- package/eslint.config.mjs +11 -0
- package/examples/C#/CalculatorTest/CalculatorTest/CalculatorSession.cs +44 -0
- package/examples/C#/CalculatorTest/CalculatorTest/CalculatorTest.csproj +24 -0
- package/examples/C#/CalculatorTest/CalculatorTest/ScenarioStandard.cs +121 -0
- package/examples/C#/CalculatorTest/CalculatorTest/ScenarioStandardInvoke.cs +121 -0
- package/examples/C#/CalculatorTest/CalculatorTest.sln +16 -0
- package/lib/commands/actions.ts +229 -0
- package/lib/commands/app.ts +227 -0
- package/lib/commands/device.ts +41 -0
- package/lib/commands/element.ts +242 -0
- package/lib/commands/extension.ts +636 -0
- package/lib/commands/functions.ts +192 -0
- package/lib/commands/index.ts +28 -0
- package/lib/commands/powershell.ts +243 -0
- package/lib/commands/system.ts +7 -0
- package/lib/constants.ts +1 -0
- package/lib/constraints.ts +43 -0
- package/lib/driver.ts +247 -0
- package/lib/enums.ts +96 -0
- package/lib/powershell/common.ts +137 -0
- package/lib/powershell/conditions.ts +169 -0
- package/lib/powershell/converter.ts +373 -0
- package/lib/powershell/core.ts +29 -0
- package/lib/powershell/elements.ts +584 -0
- package/lib/powershell/index.ts +7 -0
- package/lib/powershell/regex.ts +77 -0
- package/lib/powershell/types.ts +208 -0
- package/lib/util.ts +52 -0
- package/lib/winapi/types/index.ts +7 -0
- package/lib/winapi/types/input.ts +12 -0
- package/lib/winapi/types/keyeventf.ts +14 -0
- package/lib/winapi/types/mouseeventf.ts +37 -0
- package/lib/winapi/types/scancode.ts +96 -0
- package/lib/winapi/types/systemmetric.ts +215 -0
- package/lib/winapi/types/virtualkey.ts +354 -0
- package/lib/winapi/types/xmousebutton.ts +8 -0
- package/lib/winapi/user32.ts +842 -0
- package/lib/xpath/core.ts +699 -0
- package/lib/xpath/functions.ts +366 -0
- package/lib/xpath/index.ts +2 -0
- package/package.json +61 -0
- package/tsconfig.json +13 -0
- package/verify_driver.js +96 -0
|
@@ -0,0 +1,591 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.keyDown = keyDown;
|
|
7
|
+
exports.keyUp = keyUp;
|
|
8
|
+
exports.mouseMoveRelative = mouseMoveRelative;
|
|
9
|
+
exports.mouseScroll = mouseScroll;
|
|
10
|
+
exports.mouseMoveAbsolute = mouseMoveAbsolute;
|
|
11
|
+
exports.mouseDown = mouseDown;
|
|
12
|
+
exports.mouseUp = mouseUp;
|
|
13
|
+
exports.getDisplayOrientation = getDisplayOrientation;
|
|
14
|
+
exports.setDpiAwareness = setDpiAwareness;
|
|
15
|
+
exports.getWindowAllHandlesForProcessIds = getWindowAllHandlesForProcessIds;
|
|
16
|
+
exports.trySetForegroundWindow = trySetForegroundWindow;
|
|
17
|
+
exports.sendKeyboardEvents = sendKeyboardEvents;
|
|
18
|
+
const koffi_1 = require("koffi");
|
|
19
|
+
const types_1 = require("./types");
|
|
20
|
+
const systemmetric_1 = require("./types/systemmetric");
|
|
21
|
+
const base_driver_1 = require("@appium/base-driver");
|
|
22
|
+
const bezier_easing_1 = __importDefault(require("bezier-easing"));
|
|
23
|
+
const util_1 = require("../util");
|
|
24
|
+
const enums_1 = require("../enums");
|
|
25
|
+
const easingFunctions = Object.freeze({
|
|
26
|
+
'linear': (x) => x,
|
|
27
|
+
'ease': (0, bezier_easing_1.default)(0.25, 1, 0.25, 1),
|
|
28
|
+
'ease-in': (0, bezier_easing_1.default)(0.42, 0, 1, 1),
|
|
29
|
+
'ease-out': (0, bezier_easing_1.default)(0, 0, 0.58, 1),
|
|
30
|
+
'ease-in-out': (0, bezier_easing_1.default)(0.42, 0, 0.58, 1),
|
|
31
|
+
});
|
|
32
|
+
const UINT32_MAX = 0xFFFFFFFF;
|
|
33
|
+
const UINT16_MAX = 0xFFFF;
|
|
34
|
+
const user32 = (0, koffi_1.load)('user32.dll');
|
|
35
|
+
const POINT = (0, koffi_1.struct)('POINT', {
|
|
36
|
+
x: 'long',
|
|
37
|
+
y: 'long',
|
|
38
|
+
});
|
|
39
|
+
const MOUSEINPUT = (0, koffi_1.struct)('MOUSEINPUT', {
|
|
40
|
+
dx: 'long',
|
|
41
|
+
dy: 'long',
|
|
42
|
+
mouseData: 'uint32',
|
|
43
|
+
dwFlags: 'uint32',
|
|
44
|
+
time: 'uint32',
|
|
45
|
+
dwExtraInfo: 'uintptr',
|
|
46
|
+
});
|
|
47
|
+
const KEYBDINPUT = (0, koffi_1.struct)('KEYBDINPUT', {
|
|
48
|
+
wVk: 'uint16',
|
|
49
|
+
wScan: 'uint16',
|
|
50
|
+
dwFlags: 'uint32',
|
|
51
|
+
time: 'uint32',
|
|
52
|
+
dwExtraInfo: 'uintptr',
|
|
53
|
+
});
|
|
54
|
+
const HARDWAREINPUT = (0, koffi_1.struct)('HARDWAREINPUT', {
|
|
55
|
+
uMsg: 'uint32',
|
|
56
|
+
wParamL: 'uint16',
|
|
57
|
+
wParamH: 'uint16',
|
|
58
|
+
});
|
|
59
|
+
const INPUT = (0, koffi_1.struct)('INPUT', {
|
|
60
|
+
type: 'uint32',
|
|
61
|
+
u: (0, koffi_1.union)({
|
|
62
|
+
mi: MOUSEINPUT,
|
|
63
|
+
ki: KEYBDINPUT,
|
|
64
|
+
hi: HARDWAREINPUT,
|
|
65
|
+
})
|
|
66
|
+
});
|
|
67
|
+
const DEVMODEA = (0, koffi_1.struct)('DEVMODEA', {
|
|
68
|
+
dmDeviceName: (0, koffi_1.array)('char', 32, 'String'),
|
|
69
|
+
dmSpecVersion: 'uint16',
|
|
70
|
+
dmDriverVersion: 'uint16',
|
|
71
|
+
dmSize: 'uint16',
|
|
72
|
+
dmDriverExtra: 'uint16',
|
|
73
|
+
dmFields: 'uint32',
|
|
74
|
+
u1: (0, koffi_1.union)({
|
|
75
|
+
s1: (0, koffi_1.struct)({
|
|
76
|
+
dmOrientation: 'short',
|
|
77
|
+
dmPaperSize: 'short',
|
|
78
|
+
dmPaperLength: 'short',
|
|
79
|
+
dmPaperWidth: 'short',
|
|
80
|
+
dmScale: 'short',
|
|
81
|
+
dmCopies: 'short',
|
|
82
|
+
dmDefaultSource: 'short',
|
|
83
|
+
dmPrintQuality: 'short',
|
|
84
|
+
}),
|
|
85
|
+
dmPosition: POINT,
|
|
86
|
+
s2: (0, koffi_1.struct)({
|
|
87
|
+
dmPosition: POINT,
|
|
88
|
+
dmDisplayOrientation: 'uint32',
|
|
89
|
+
dmDisplayFixedOutput: 'uint32',
|
|
90
|
+
}),
|
|
91
|
+
}),
|
|
92
|
+
dmColor: 'short',
|
|
93
|
+
dmDuplex: 'short',
|
|
94
|
+
dmYResolution: 'short',
|
|
95
|
+
dmTTOption: 'short',
|
|
96
|
+
dmCollate: 'short',
|
|
97
|
+
dmFormName: (0, koffi_1.array)('char', 32, 'String'),
|
|
98
|
+
dmLogPixels: 'uint16',
|
|
99
|
+
dmBitsPerPel: 'uint32',
|
|
100
|
+
dmPelsWidth: 'uint32',
|
|
101
|
+
dmPelsHeight: 'uint32',
|
|
102
|
+
u2: (0, koffi_1.union)({
|
|
103
|
+
dmDisplayFlags: 'uint32',
|
|
104
|
+
dmNup: 'uint32',
|
|
105
|
+
}),
|
|
106
|
+
dmDisplayFrequency: 'uint32',
|
|
107
|
+
dmICMMethod: 'uint32',
|
|
108
|
+
dmICMIntent: 'uint32',
|
|
109
|
+
dmMediaType: 'uint32',
|
|
110
|
+
dmDitherType: 'uint32',
|
|
111
|
+
dmReserved1: 'uint32',
|
|
112
|
+
dmReserved2: 'uint32',
|
|
113
|
+
dmPanningWidth: 'uint32',
|
|
114
|
+
dmPanningHeight: 'uint32',
|
|
115
|
+
});
|
|
116
|
+
const BOOL = (0, koffi_1.alias)('BOOL', koffi_1.types.bool);
|
|
117
|
+
const DWORD = (0, koffi_1.alias)('DWORD', koffi_1.types.uint32_t);
|
|
118
|
+
const HANDLE = (0, koffi_1.pointer)('HANDLE', (0, koffi_1.opaque)());
|
|
119
|
+
const LONG_PTR = (0, koffi_1.pointer)('LONG_PTR', koffi_1.types.long);
|
|
120
|
+
const LPDWORD = (0, koffi_1.pointer)('LPDWORD', DWORD);
|
|
121
|
+
const HWND = (0, koffi_1.alias)('HWND', HANDLE);
|
|
122
|
+
const LPARAM = (0, koffi_1.alias)('LPARAM', LONG_PTR);
|
|
123
|
+
const LPSTR = (0, koffi_1.pointer)('LPSTR', 'char');
|
|
124
|
+
const EnumWindowsProc = (0, koffi_1.proto)('BOOL __stdcall EnumWindowsProc (HWND hwnd, LPARAM lParam)');
|
|
125
|
+
// TODO: update all functions to have their parameters aliased properly
|
|
126
|
+
const SendInput = user32.func(/* c */ `unsigned int __stdcall SendInput(unsigned int cInputs, INPUT *pInputs, int cbSize)`);
|
|
127
|
+
const GetSystemMetrics = user32.func(/* c */ `int __stdcall GetSystemMetrics(int nIndex)`);
|
|
128
|
+
const SetProcessDPIAware = user32.func(/* c */ `bool __stdcall SetProcessDPIAware()`);
|
|
129
|
+
const GetDpiForSystem = user32.func(/* c */ `unsigned int __stdcall GetDpiForSystem()`);
|
|
130
|
+
const GetCursorPos = user32.func(/* c */ `bool __stdcall GetCursorPos(_Out_ POINT *lpPoint)`);
|
|
131
|
+
const EnumDisplaySettingsA = user32.func(/* c */ `bool __stdcall EnumDisplaySettingsA(str lpszDeviceName, uint iModeNum, _Out_ DEVMODEA *lpDevMode)`);
|
|
132
|
+
// end TODO
|
|
133
|
+
const GetWindowThreadProcessId = user32.func(/* c */ `DWORD __stdcall GetWindowThreadProcessId(HWND hWnd, _Out_ LPDWORD lpdwProcessId)`);
|
|
134
|
+
const GetWindowTextA = user32.func(/* c */ `int __stdcall GetWindowTextA(HWND hWnd, LPSTR lpString, int nMaxCount)`);
|
|
135
|
+
const IsWindowVisible = user32.func(/* c */ `BOOL __stdcall IsWindowVisible(HWND hWnd)`);
|
|
136
|
+
const EnumWindows = user32.func(/* c */ `BOOL __stdcall EnumWindows(EnumWindowsProc *enumProc, LPARAM lParam)`);
|
|
137
|
+
const SetForegroundWindow = user32.func(/* c */ `BOOL __stdcall SetForegroundWindow(HWND hWnd)`);
|
|
138
|
+
function makeKeyboardEvent(args) {
|
|
139
|
+
let flags = 0;
|
|
140
|
+
if ((args.scan === undefined && args.vk === undefined) || (args.scan !== undefined && args.vk !== undefined)) {
|
|
141
|
+
throw new base_driver_1.errors.InvalidArgumentError('You should provide either vk or scan, but not both.');
|
|
142
|
+
}
|
|
143
|
+
switch (typeof args.scan) {
|
|
144
|
+
case 'string':
|
|
145
|
+
if (args.scan.length !== 1) {
|
|
146
|
+
throw new base_driver_1.errors.InvalidArgumentError(`scan parameter expects a single character, but received ${args.scan.length}.`);
|
|
147
|
+
}
|
|
148
|
+
flags |= types_1.KeyEventFlags.KEYEVENTF_UNICODE;
|
|
149
|
+
args.scan = args.scan.charCodeAt(0);
|
|
150
|
+
break;
|
|
151
|
+
case 'number':
|
|
152
|
+
flags |= types_1.KeyEventFlags.KEYEVENTF_SCANCODE;
|
|
153
|
+
break;
|
|
154
|
+
}
|
|
155
|
+
if (!args.down) {
|
|
156
|
+
flags |= types_1.KeyEventFlags.KEYEVENTF_KEYUP;
|
|
157
|
+
}
|
|
158
|
+
return {
|
|
159
|
+
type: types_1.InputType.INPUT_KEYBOARD,
|
|
160
|
+
u: {
|
|
161
|
+
ki: {
|
|
162
|
+
wVk: args.vk ?? 0,
|
|
163
|
+
wScan: args.scan ?? 0,
|
|
164
|
+
dwFlags: flags ?? 0,
|
|
165
|
+
time: 0,
|
|
166
|
+
dwExtraInfo: 0,
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
function makeEmptyMouseEvent() {
|
|
172
|
+
return {
|
|
173
|
+
type: types_1.InputType.INPUT_MOUSE,
|
|
174
|
+
u: {
|
|
175
|
+
mi: {
|
|
176
|
+
dx: 0,
|
|
177
|
+
dy: 0,
|
|
178
|
+
mouseData: 0,
|
|
179
|
+
dwFlags: 0,
|
|
180
|
+
time: 0,
|
|
181
|
+
dwExtraInfo: 0,
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
function makeMouseDownEvents(button) {
|
|
187
|
+
const mouseEvent = makeEmptyMouseEvent();
|
|
188
|
+
switch (button) {
|
|
189
|
+
case 0:
|
|
190
|
+
mouseEvent.u.mi.dwFlags = types_1.MouseEventFlags.MOUSEEVENTF_LEFTDOWN;
|
|
191
|
+
break;
|
|
192
|
+
case 1:
|
|
193
|
+
mouseEvent.u.mi.dwFlags = types_1.MouseEventFlags.MOUSEEVENTF_MIDDLEDOWN;
|
|
194
|
+
break;
|
|
195
|
+
case 2:
|
|
196
|
+
mouseEvent.u.mi.dwFlags = types_1.MouseEventFlags.MOUSEEVENTF_RIGHTDOWN;
|
|
197
|
+
break;
|
|
198
|
+
case 3:
|
|
199
|
+
mouseEvent.u.mi.dwFlags = types_1.MouseEventFlags.MOUSEEVENTF_XDOWN;
|
|
200
|
+
mouseEvent.u.mi.mouseData = types_1.XMouseButton.XBUTTON1;
|
|
201
|
+
break;
|
|
202
|
+
case 4:
|
|
203
|
+
mouseEvent.u.mi.dwFlags = types_1.MouseEventFlags.MOUSEEVENTF_XDOWN;
|
|
204
|
+
mouseEvent.u.mi.mouseData = types_1.XMouseButton.XBUTTON2;
|
|
205
|
+
break;
|
|
206
|
+
default:
|
|
207
|
+
throw new base_driver_1.errors.InvalidArgumentError('button parameter should be a positive integer between 0 and 4.');
|
|
208
|
+
}
|
|
209
|
+
return [mouseEvent];
|
|
210
|
+
}
|
|
211
|
+
function makeMouseUpEvents(button) {
|
|
212
|
+
const mouseEvent = makeEmptyMouseEvent();
|
|
213
|
+
switch (button) {
|
|
214
|
+
case 0:
|
|
215
|
+
mouseEvent.u.mi.dwFlags = types_1.MouseEventFlags.MOUSEEVENTF_LEFTUP;
|
|
216
|
+
break;
|
|
217
|
+
case 1:
|
|
218
|
+
mouseEvent.u.mi.dwFlags = types_1.MouseEventFlags.MOUSEEVENTF_MIDDLEUP;
|
|
219
|
+
break;
|
|
220
|
+
case 2:
|
|
221
|
+
mouseEvent.u.mi.dwFlags = types_1.MouseEventFlags.MOUSEEVENTF_RIGHTUP;
|
|
222
|
+
break;
|
|
223
|
+
case 3:
|
|
224
|
+
mouseEvent.u.mi.dwFlags = types_1.MouseEventFlags.MOUSEEVENTF_XUP;
|
|
225
|
+
mouseEvent.u.mi.mouseData = types_1.XMouseButton.XBUTTON1;
|
|
226
|
+
break;
|
|
227
|
+
case 4:
|
|
228
|
+
mouseEvent.u.mi.dwFlags = types_1.MouseEventFlags.MOUSEEVENTF_XUP;
|
|
229
|
+
mouseEvent.u.mi.mouseData = types_1.XMouseButton.XBUTTON2;
|
|
230
|
+
break;
|
|
231
|
+
default:
|
|
232
|
+
throw new base_driver_1.errors.InvalidArgumentError('button parameter should be a positive integer between 0 and 4.');
|
|
233
|
+
}
|
|
234
|
+
return [mouseEvent];
|
|
235
|
+
}
|
|
236
|
+
function makeMouseMoveEvents(args) {
|
|
237
|
+
const { x, y, wheel, relative, screenResolutionAndRefreshRate } = args;
|
|
238
|
+
if (wheel) {
|
|
239
|
+
const mouseEvents = [];
|
|
240
|
+
if (x !== 0) {
|
|
241
|
+
const horizontalScrollEvent = makeEmptyMouseEvent();
|
|
242
|
+
horizontalScrollEvent.u.mi.dwFlags = types_1.MouseEventFlags.MOUSEEVENTF_HWHEEL;
|
|
243
|
+
horizontalScrollEvent.u.mi.mouseData = x;
|
|
244
|
+
mouseEvents.push(horizontalScrollEvent);
|
|
245
|
+
}
|
|
246
|
+
if (y !== 0) {
|
|
247
|
+
const verticalScrollEvent = makeEmptyMouseEvent();
|
|
248
|
+
verticalScrollEvent.u.mi.dwFlags = types_1.MouseEventFlags.MOUSEEVENTF_WHEEL;
|
|
249
|
+
verticalScrollEvent.u.mi.mouseData = y;
|
|
250
|
+
}
|
|
251
|
+
return mouseEvents;
|
|
252
|
+
}
|
|
253
|
+
const mouseEvent = makeEmptyMouseEvent();
|
|
254
|
+
if (!screenResolutionAndRefreshRate) {
|
|
255
|
+
throw new base_driver_1.errors.InvalidArgumentError('screenResolution parameter must be set for absolute mouse move.');
|
|
256
|
+
}
|
|
257
|
+
const [screenWidth, screenHeight] = screenResolutionAndRefreshRate;
|
|
258
|
+
mouseEvent.u.mi.dx = relative ? Math.trunc(x) : Math.trunc((x * UINT16_MAX) / screenWidth);
|
|
259
|
+
mouseEvent.u.mi.dy = relative ? Math.trunc(y) : Math.trunc((y * UINT16_MAX) / screenHeight);
|
|
260
|
+
mouseEvent.u.mi.dwFlags = types_1.MouseEventFlags.MOUSEEVENTF_MOVE;
|
|
261
|
+
if (!relative) {
|
|
262
|
+
mouseEvent.u.mi.dwFlags |= types_1.MouseEventFlags.MOUSEEVENTF_ABSOLUTE;
|
|
263
|
+
}
|
|
264
|
+
return [mouseEvent];
|
|
265
|
+
}
|
|
266
|
+
function charToKeyboardEvents(char, down, forceUnicode = false) {
|
|
267
|
+
const charCode = char.charCodeAt(0);
|
|
268
|
+
if ((charCode & 0xF000) === 0xE000) {
|
|
269
|
+
switch (char) {
|
|
270
|
+
case enums_1.Key.CANCEL:
|
|
271
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_CANCEL, down })];
|
|
272
|
+
case enums_1.Key.HELP:
|
|
273
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_HELP, down })];
|
|
274
|
+
case enums_1.Key.BACKSPACE:
|
|
275
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_BACK, down })];
|
|
276
|
+
case enums_1.Key.TAB:
|
|
277
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_TAB, down })];
|
|
278
|
+
case enums_1.Key.CLEAR:
|
|
279
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_CLEAR, down })];
|
|
280
|
+
case enums_1.Key.RETURN:
|
|
281
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_RETURN, down })];
|
|
282
|
+
case enums_1.Key.ENTER:
|
|
283
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_RETURN, down })];
|
|
284
|
+
case enums_1.Key.SHIFT:
|
|
285
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_SHIFT, down })];
|
|
286
|
+
case enums_1.Key.CONTROL:
|
|
287
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_CONTROL, down })];
|
|
288
|
+
case enums_1.Key.ALT:
|
|
289
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_MENU, down })];
|
|
290
|
+
case enums_1.Key.PAUSE:
|
|
291
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_PAUSE, down })];
|
|
292
|
+
case enums_1.Key.ESCAPE:
|
|
293
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_ESCAPE, down })];
|
|
294
|
+
case enums_1.Key.SPACE:
|
|
295
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_SPACE, down })];
|
|
296
|
+
case enums_1.Key.PAGE_UP:
|
|
297
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_PRIOR, down })];
|
|
298
|
+
case enums_1.Key.PAGE_DOWN:
|
|
299
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_NEXT, down })];
|
|
300
|
+
case enums_1.Key.END:
|
|
301
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_END, down })];
|
|
302
|
+
case enums_1.Key.HOME:
|
|
303
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_HOME, down })];
|
|
304
|
+
case enums_1.Key.LEFT:
|
|
305
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_LEFT, down })];
|
|
306
|
+
case enums_1.Key.UP:
|
|
307
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_UP, down })];
|
|
308
|
+
case enums_1.Key.RIGHT:
|
|
309
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_RIGHT, down })];
|
|
310
|
+
case enums_1.Key.DOWN:
|
|
311
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_DOWN, down })];
|
|
312
|
+
case enums_1.Key.INSERT:
|
|
313
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_INSERT, down })];
|
|
314
|
+
case enums_1.Key.DELETE:
|
|
315
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_DELETE, down })];
|
|
316
|
+
case enums_1.Key.SEMICOLON:
|
|
317
|
+
return [makeKeyboardEvent({ scan: types_1.ScanCode.SEMICOLON, down })];
|
|
318
|
+
case enums_1.Key.EQUALS:
|
|
319
|
+
return [makeKeyboardEvent({ scan: types_1.ScanCode.EQUAL, down })];
|
|
320
|
+
case enums_1.Key.NUMPAD0:
|
|
321
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_NUMPAD0, down })];
|
|
322
|
+
case enums_1.Key.NUMPAD1:
|
|
323
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_NUMPAD1, down })];
|
|
324
|
+
case enums_1.Key.NUMPAD2:
|
|
325
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_NUMPAD2, down })];
|
|
326
|
+
case enums_1.Key.NUMPAD3:
|
|
327
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_NUMPAD3, down })];
|
|
328
|
+
case enums_1.Key.NUMPAD4:
|
|
329
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_NUMPAD4, down })];
|
|
330
|
+
case enums_1.Key.NUMPAD5:
|
|
331
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_NUMPAD5, down })];
|
|
332
|
+
case enums_1.Key.NUMPAD6:
|
|
333
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_NUMPAD6, down })];
|
|
334
|
+
case enums_1.Key.NUMPAD7:
|
|
335
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_NUMPAD7, down })];
|
|
336
|
+
case enums_1.Key.NUMPAD8:
|
|
337
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_NUMPAD8, down })];
|
|
338
|
+
case enums_1.Key.NUMPAD9:
|
|
339
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_NUMPAD9, down })];
|
|
340
|
+
case enums_1.Key.MULTIPLY:
|
|
341
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_MULTIPLY, down })];
|
|
342
|
+
case enums_1.Key.ADD:
|
|
343
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_ADD, down })];
|
|
344
|
+
case enums_1.Key.SEPARATOR:
|
|
345
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_SEPARATOR, down })];
|
|
346
|
+
case enums_1.Key.SUBTRACT:
|
|
347
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_SUBTRACT, down })];
|
|
348
|
+
case enums_1.Key.DECIMAL:
|
|
349
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_DECIMAL, down })];
|
|
350
|
+
case enums_1.Key.DIVIDE:
|
|
351
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_DIVIDE, down })];
|
|
352
|
+
case enums_1.Key.F1:
|
|
353
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_F1, down })];
|
|
354
|
+
case enums_1.Key.F2:
|
|
355
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_F2, down })];
|
|
356
|
+
case enums_1.Key.F3:
|
|
357
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_F3, down })];
|
|
358
|
+
case enums_1.Key.F4:
|
|
359
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_F4, down })];
|
|
360
|
+
case enums_1.Key.F5:
|
|
361
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_F5, down })];
|
|
362
|
+
case enums_1.Key.F6:
|
|
363
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_F6, down })];
|
|
364
|
+
case enums_1.Key.F7:
|
|
365
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_F7, down })];
|
|
366
|
+
case enums_1.Key.F8:
|
|
367
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_F8, down })];
|
|
368
|
+
case enums_1.Key.F9:
|
|
369
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_F9, down })];
|
|
370
|
+
case enums_1.Key.F10:
|
|
371
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_F10, down })];
|
|
372
|
+
case enums_1.Key.F11:
|
|
373
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_F11, down })];
|
|
374
|
+
case enums_1.Key.F12:
|
|
375
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_F12, down })];
|
|
376
|
+
case enums_1.Key.META:
|
|
377
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_LWIN, down })];
|
|
378
|
+
case enums_1.Key.ZENKAKUHANKAKU:
|
|
379
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_OEM_AUTO, down })];
|
|
380
|
+
case enums_1.Key.R_SHIFT:
|
|
381
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_RSHIFT, down })];
|
|
382
|
+
case enums_1.Key.R_CONTROL:
|
|
383
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_RCONTROL, down })];
|
|
384
|
+
case enums_1.Key.R_ALT:
|
|
385
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_RMENU, down })];
|
|
386
|
+
case enums_1.Key.R_META:
|
|
387
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_RWIN, down })];
|
|
388
|
+
case enums_1.Key.R_PAGEUP:
|
|
389
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_NUMPAD9, down })];
|
|
390
|
+
case enums_1.Key.R_PAGEDOWN:
|
|
391
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_NUMPAD3, down })];
|
|
392
|
+
case enums_1.Key.R_END:
|
|
393
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_NUMPAD1, down })];
|
|
394
|
+
case enums_1.Key.R_HOME:
|
|
395
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_NUMPAD7, down })];
|
|
396
|
+
case enums_1.Key.R_ARROWLEFT:
|
|
397
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_NUMPAD4, down })];
|
|
398
|
+
case enums_1.Key.R_ARROWUP:
|
|
399
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_NUMPAD8, down })];
|
|
400
|
+
case enums_1.Key.R_ARROWRIGHT:
|
|
401
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_NUMPAD6, down })];
|
|
402
|
+
case enums_1.Key.R_ARROWDOWN:
|
|
403
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_NUMPAD2, down })];
|
|
404
|
+
case enums_1.Key.R_INSERT:
|
|
405
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_NUMPAD0, down })];
|
|
406
|
+
case enums_1.Key.R_DELETE:
|
|
407
|
+
return [makeKeyboardEvent({ vk: types_1.VirtualKey.VK_DECIMAL, down })];
|
|
408
|
+
default:
|
|
409
|
+
throw new base_driver_1.errors.InvalidArgumentError(`Invalid character \\u${charCode.toString(16)}.`);
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
// Currently only [a-z0-9] are sent as scan code through performAction (in order for them to work in hotkeys).
|
|
413
|
+
if (!forceUnicode) {
|
|
414
|
+
if (/[a-z]/.test(char)) {
|
|
415
|
+
return [makeKeyboardEvent({ scan: types_1.ScanCode[char.toUpperCase()], down })];
|
|
416
|
+
}
|
|
417
|
+
if (/[0-9]/.test(char)) {
|
|
418
|
+
return [makeKeyboardEvent({ scan: types_1.ScanCode[`N${char}`], down })];
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
return [makeKeyboardEvent({ scan: char, down })];
|
|
422
|
+
}
|
|
423
|
+
function sendKeyInput(char, down, forceUnicode = false) {
|
|
424
|
+
const events = charToKeyboardEvents(char, down, forceUnicode);
|
|
425
|
+
const returnCode = SendInput(events.length, events, (0, koffi_1.sizeof)(INPUT));
|
|
426
|
+
assertSuccessSendInputReturnCode(returnCode);
|
|
427
|
+
}
|
|
428
|
+
function sendMouseButtonInput(button, down) {
|
|
429
|
+
const events = down ? makeMouseDownEvents(button) : makeMouseUpEvents(button);
|
|
430
|
+
const returnCode = SendInput(events.length, events, (0, koffi_1.sizeof)(INPUT));
|
|
431
|
+
assertSuccessSendInputReturnCode(returnCode);
|
|
432
|
+
}
|
|
433
|
+
async function sendMouseMoveInput(args) {
|
|
434
|
+
const { duration } = args;
|
|
435
|
+
let { x, y, easingFunction, relative } = args;
|
|
436
|
+
const screenResolutionAndRefreshRate = getScreenResolutionAndRefreshRate();
|
|
437
|
+
const [, , refreshRate] = screenResolutionAndRefreshRate;
|
|
438
|
+
const updateInterval = 1000 / refreshRate;
|
|
439
|
+
const iterations = Math.max(Math.floor(duration / updateInterval), 1);
|
|
440
|
+
const cursorPosition = {
|
|
441
|
+
x: 0,
|
|
442
|
+
y: 0,
|
|
443
|
+
};
|
|
444
|
+
if (GetCursorPos(cursorPosition) && iterations > 1) {
|
|
445
|
+
if (relative) {
|
|
446
|
+
x += cursorPosition.x;
|
|
447
|
+
y += cursorPosition.y;
|
|
448
|
+
}
|
|
449
|
+
// setting relative to false since coordinates are now absolute
|
|
450
|
+
relative = false;
|
|
451
|
+
}
|
|
452
|
+
else {
|
|
453
|
+
// ignore easing function of it can't retrieve current cursor position
|
|
454
|
+
// this is preventing the method from failing
|
|
455
|
+
easingFunction = undefined;
|
|
456
|
+
}
|
|
457
|
+
if (easingFunction) {
|
|
458
|
+
let calculatePoint;
|
|
459
|
+
// the lines below assume that the validation has been made on createSession
|
|
460
|
+
if (easingFunction.startsWith('cubic-bezier')) {
|
|
461
|
+
const bezierArgs = /\((.*?)\)/.exec(easingFunction)?.groups?.[0]
|
|
462
|
+
.split(',').map((n) => parseFloat(n.trim())) ?? [0, 0, 1, 1];
|
|
463
|
+
calculatePoint = bezier_easing_1.default.apply(bezierArgs);
|
|
464
|
+
}
|
|
465
|
+
else {
|
|
466
|
+
calculatePoint = easingFunctions[easingFunction];
|
|
467
|
+
}
|
|
468
|
+
for (let i = 1; i < iterations; i++) {
|
|
469
|
+
setTimeout(() => {
|
|
470
|
+
const normalizedProgress = (i + 1) / iterations;
|
|
471
|
+
const easedProgress = i !== iterations - 1 ? calculatePoint(normalizedProgress) : 1;
|
|
472
|
+
const interpolatedX = cursorPosition.x + (x - cursorPosition.x) * easedProgress;
|
|
473
|
+
const interpolatedY = cursorPosition.y + (y - cursorPosition.y) * easedProgress;
|
|
474
|
+
const events = makeMouseMoveEvents({ x: interpolatedX, y: interpolatedY, wheel: false, screenResolutionAndRefreshRate });
|
|
475
|
+
const returnCode = SendInput(events.length, events, (0, koffi_1.sizeof)(INPUT));
|
|
476
|
+
assertSuccessSendInputReturnCode(returnCode);
|
|
477
|
+
}, i * updateInterval);
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
else {
|
|
481
|
+
const events = makeMouseMoveEvents({ x, y, wheel: false, screenResolutionAndRefreshRate });
|
|
482
|
+
const returnCode = SendInput(events.length, events, (0, koffi_1.sizeof)(INPUT));
|
|
483
|
+
assertSuccessSendInputReturnCode(returnCode);
|
|
484
|
+
}
|
|
485
|
+
await (0, util_1.sleep)(duration);
|
|
486
|
+
}
|
|
487
|
+
function sendMouseScrollInput(x, y) {
|
|
488
|
+
const events = makeMouseMoveEvents({ x, y, wheel: true });
|
|
489
|
+
const returnCode = SendInput(events.length, events, (0, koffi_1.sizeof)(INPUT));
|
|
490
|
+
assertSuccessSendInputReturnCode(returnCode);
|
|
491
|
+
}
|
|
492
|
+
function assertSuccessSendInputReturnCode(returnCode) {
|
|
493
|
+
if (returnCode === UINT32_MAX) {
|
|
494
|
+
throw new base_driver_1.errors.UnknownError('An error occurred while executing SendInput.');
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
// TODO: Remove eslint-disable-next-line when used
|
|
498
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
499
|
+
function getResolutionScalingFactor() {
|
|
500
|
+
const dpi = GetDpiForSystem();
|
|
501
|
+
const scalingFactor = dpi / 96;
|
|
502
|
+
// @ts-expect-error temporary quick and dirty version of memoization
|
|
503
|
+
getResolutionScalingFactor = () => scalingFactor;
|
|
504
|
+
return scalingFactor;
|
|
505
|
+
}
|
|
506
|
+
function getScreenResolutionAndRefreshRate() {
|
|
507
|
+
const width = GetSystemMetrics(systemmetric_1.SystemMetric.SM_CXSCREEN);
|
|
508
|
+
const height = GetSystemMetrics(systemmetric_1.SystemMetric.SM_CYSCREEN);
|
|
509
|
+
let refreshRate = null;
|
|
510
|
+
const buffer = Buffer.alloc((0, koffi_1.sizeof)(DEVMODEA));
|
|
511
|
+
EnumDisplaySettingsA(null, -1, buffer);
|
|
512
|
+
const deviceMode = { dmDisplayFrequency: buffer.readUInt32LE(120) };
|
|
513
|
+
refreshRate = deviceMode.dmDisplayFrequency;
|
|
514
|
+
const resolution = [width, height, refreshRate];
|
|
515
|
+
const nonMemoizedMethod = getScreenResolutionAndRefreshRate;
|
|
516
|
+
const currentTime = new Date().getTime();
|
|
517
|
+
// @ts-expect-error memoizing the function to prevent repeated calls that might crash Node.js
|
|
518
|
+
getScreenResolutionAndRefreshRate = () => {
|
|
519
|
+
if (new Date().getTime() - currentTime > 1000) {
|
|
520
|
+
// @ts-expect-error reset memoization after 1 second
|
|
521
|
+
getScreenResolutionAndRefreshRate = nonMemoizedMethod;
|
|
522
|
+
}
|
|
523
|
+
return resolution;
|
|
524
|
+
};
|
|
525
|
+
return resolution;
|
|
526
|
+
}
|
|
527
|
+
function keyDown(char, forceUnicode = false) {
|
|
528
|
+
sendKeyInput(char, true, forceUnicode);
|
|
529
|
+
}
|
|
530
|
+
function keyUp(char, forceUnicode = false) {
|
|
531
|
+
sendKeyInput(char, false, forceUnicode);
|
|
532
|
+
}
|
|
533
|
+
async function mouseMoveRelative(x, y, duration = 0, easingFunction) {
|
|
534
|
+
await sendMouseMoveInput({ x, y, relative: true, duration, easingFunction });
|
|
535
|
+
}
|
|
536
|
+
function mouseScroll(x, y) {
|
|
537
|
+
sendMouseScrollInput(x, y);
|
|
538
|
+
}
|
|
539
|
+
async function mouseMoveAbsolute(x, y, duration = 0, easingFunction) {
|
|
540
|
+
await sendMouseMoveInput({ x, y, relative: false, duration, easingFunction });
|
|
541
|
+
}
|
|
542
|
+
function mouseDown(button = 0) {
|
|
543
|
+
sendMouseButtonInput(button, true);
|
|
544
|
+
}
|
|
545
|
+
function mouseUp(button = 0) {
|
|
546
|
+
sendMouseButtonInput(button, false);
|
|
547
|
+
}
|
|
548
|
+
function getDisplayOrientation() {
|
|
549
|
+
const resolution = getScreenResolutionAndRefreshRate();
|
|
550
|
+
return resolution[0] > resolution[1] ? 'LANDSCAPE' : 'PORTRAIT';
|
|
551
|
+
}
|
|
552
|
+
function setDpiAwareness() {
|
|
553
|
+
if (!SetProcessDPIAware()) {
|
|
554
|
+
throw new base_driver_1.errors.UnknownError('An error occurred while trying to set DPI awareness.');
|
|
555
|
+
}
|
|
556
|
+
;
|
|
557
|
+
}
|
|
558
|
+
function getWindowAllHandlesForProcessIds(processIds) {
|
|
559
|
+
const handles = [];
|
|
560
|
+
EnumWindows((hWnd) => {
|
|
561
|
+
const ptr = [null];
|
|
562
|
+
GetWindowThreadProcessId(hWnd, ptr);
|
|
563
|
+
const pid = ptr[0];
|
|
564
|
+
if (pid && processIds.includes(pid) && IsWindowVisible(hWnd)) {
|
|
565
|
+
const buffer = Buffer.alloc(256); // Adjust size as needed
|
|
566
|
+
GetWindowTextA(hWnd, buffer, buffer.length);
|
|
567
|
+
const windowTitle = buffer.toString('utf8').replace(/\0/g, '');
|
|
568
|
+
if (windowTitle) {
|
|
569
|
+
handles.push(Number((0, koffi_1.address)(hWnd)));
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
return true;
|
|
573
|
+
}, 0);
|
|
574
|
+
return handles;
|
|
575
|
+
}
|
|
576
|
+
function trySetForegroundWindow(windowHandle) {
|
|
577
|
+
return EnumWindows((hWnd) => {
|
|
578
|
+
if (windowHandle === Number((0, koffi_1.address)(hWnd))) {
|
|
579
|
+
SetForegroundWindow(hWnd);
|
|
580
|
+
return false;
|
|
581
|
+
}
|
|
582
|
+
return true;
|
|
583
|
+
}, 0);
|
|
584
|
+
}
|
|
585
|
+
function sendKeyboardEvents(inputs) {
|
|
586
|
+
return SendInput(inputs.length, inputs.map((ki) => ({
|
|
587
|
+
type: types_1.InputType.INPUT_KEYBOARD,
|
|
588
|
+
u: { ki },
|
|
589
|
+
})), (0, koffi_1.sizeof)(INPUT));
|
|
590
|
+
}
|
|
591
|
+
//# sourceMappingURL=user32.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user32.js","sourceRoot":"","sources":["../../../lib/winapi/user32.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Element } from '@appium/types';
|
|
2
|
+
import { ExprNode } from 'xpath-analyzer';
|
|
3
|
+
import { Condition, AutomationElement } from '../powershell';
|
|
4
|
+
export declare function xpathToElIdOrIds(selector: string, mult: boolean, context: string | undefined, sendPowerShellCommand: (command: string) => Promise<string>): Promise<Element | Element[]>;
|
|
5
|
+
export declare function processExprNode<T>(exprNode: ExprNode, context: AutomationElement, sendPowerShellCommand: (command: string) => Promise<string>): Promise<T[]>;
|
|
6
|
+
export declare function processExprNodeAsPredicate(exprNode: ExprNode, context: AutomationElement, positions: Set<number>, sendPowerShellCommand: (command: string) => Promise<string>, relativeExprNodes?: ExprNode[]): Promise<[Condition, ExprNode[]?]>;
|
|
7
|
+
export declare function predicateProcessableBeforeNode(exprNode: ExprNode): boolean;
|
|
8
|
+
//# sourceMappingURL=core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../lib/xpath/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxC,OAAsB,EAMlB,QAAQ,EA0CX,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAGH,SAAS,EAIT,iBAAiB,EAcpB,MAAM,eAAe,CAAC;AAgCvB,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,qBAAqB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,EAAE,CAAC,CA+C9L;AAED,wBAAsB,eAAe,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CA+GlK;AAwCD,wBAAsB,0BAA0B,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,qBAAqB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CA6IvP;AA6ND,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CA8B1E"}
|