├── .gitignore ├── .npmignore ├── README.md ├── dlls ├── AutoItX3.dll ├── AutoItX3_DLL.h └── AutoItX3_x64.dll ├── examples └── index.test.js ├── package.json ├── src ├── index.ts ├── util.ts └── wchar.js ├── tools ├── argumentNames.json ├── generate_arg_name.js └── generate_code.js ├── tsconfig.json └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | # Node.js 2 | node_modules/ 3 | npm-debug.log 4 | 5 | # IntelliJ 6 | .idea/ 7 | *.iml 8 | *.iws 9 | *.ipr 10 | out/ 11 | dist 12 | tools/gen.ts -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | src 3 | tsconfig.json 4 | .idea 5 | tools -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Node AutoIt Koffi 2 | 3 | This Node.js module provides support for all AutoIt functions, allowing users to automate Windows GUI tasks seamlessly. 4 | 5 | ## Example 6 | Check out an example of how to use this module in action: [Example Code](https://github.com/nullmastermind/node-autoit-koffi/blob/master/examples/index.test.js) 7 | 8 | ## Installation 9 | To install Node AutoIt Koffi, simply run the following command: 10 | 11 | ```bash 12 | npm install node-autoit-koffi 13 | ``` 14 | 15 | ## Usage 16 | Here's a quick example of how you can use Node AutoIt Koffi in your Node.js application: 17 | 18 | ```javascript 19 | const autoit = require("node-autoit-koffi"); 20 | 21 | async function main() { 22 | await autoit.init(); 23 | // Your code here 24 | await autoit.mouseMove(0, 0); 25 | } 26 | 27 | void main(); 28 | ``` 29 | 30 | Make sure to refer to the [AutoIt documentation](https://www.autoitscript.com/autoit3/docs/functions/) for a list of supported functions and their usage. 31 | 32 | ```typescript 33 | type Point = { 34 | x: number; 35 | y: number; 36 | }; 37 | type Rect = { 38 | left: number; 39 | top: number; 40 | right: number; 41 | bottom: number; 42 | }; 43 | 44 | const init: () => Promise; 45 | const error: () => Promise; 46 | const autoItSetOption: (szOption: string, nValue: number) => Promise; 47 | const clipGet: (nBufSize?: number) => Promise; 48 | const clipPut: (szClip: string) => Promise; 49 | const controlClick: (szTitle: string, szText: string | undefined, szControl: string, szButton?: string, nNumClicks?: number, nX?: number, nY?: number) => Promise; 50 | const controlClickByHandle: (hWnd: number, hCtrl: number, szButton?: string, nNumClicks?: number, nX?: number, nY?: number) => Promise; 51 | const controlCommand: (szTitle: string, szText: string | undefined, szControl: string, szCommand: string, szExtra?: string, nBufSize?: number) => Promise; 52 | const controlCommandByHandle: (hWnd: number, hCtrl: number, szCommand: string, szExtra?: string, nBufSize?: number) => Promise; 53 | const controlListView: (szTitle: string, szText: string | undefined, szControl: string, szCommand: string, szExtra1?: string, szExtra2?: string, nBufSize?: number) => Promise; 54 | const controlListViewByHandle: (hWnd: number, hCtrl: number, szCommand: string, szExtra1?: string, szExtra2?: string, nBufSize?: number) => Promise; 55 | const controlDisable: (szTitle: string, szText: string | undefined, szControl: string) => Promise; 56 | const controlDisableByHandle: (hWnd: number, hCtrl: number) => Promise; 57 | const controlEnable: (szTitle: string, szText: string | undefined, szControl: string) => Promise; 58 | const controlEnableByHandle: (hWnd: number, hCtrl: number) => Promise; 59 | const controlFocus: (szTitle: string, szText: string | undefined, szControl: string) => Promise; 60 | const controlFocusByHandle: (hWnd: number, hCtrl: number) => Promise; 61 | const controlGetFocus: (szTitle: string, szText?: string, nBufSize?: number) => Promise; 62 | const controlGetFocusByHandle: (hWnd: number, nBufSize?: number) => Promise; 63 | const controlGetHandle: (hWnd: number, szControl: string) => Promise; 64 | const controlGetHandleAsText: (szTitle: string, szText: string | undefined, szControl: string, nBufSize?: number) => Promise; 65 | const controlGetPos: (szTitle: string, szText: string | undefined, szControl: string) => Promise; 66 | const controlGetPosByHandle: (hWnd: number, hCtrl: number) => Promise; 67 | const controlGetText: (szTitle: string, szText: string | undefined, szControl: string, nBufSize?: number) => Promise; 68 | const controlGetTextByHandle: (hWnd: number, hCtrl: number, nBufSize?: number) => Promise; 69 | const controlHide: (szTitle: string, szText: string | undefined, szControl: string) => Promise; 70 | const controlHideByHandle: (hWnd: number, hCtrl: number) => Promise; 71 | const controlMove: (szTitle: string, szText: string | undefined, szControl: string, nX: number, nY: number, nWidth?: number, nHeight?: number) => Promise; 72 | const controlMoveByHandle: (hWnd: number, hCtrl: number, nX: number, nY: number, nWidth?: number, nHeight?: number) => Promise; 73 | const controlSend: (szTitle: string, szText: string | undefined, szControl: string, szSendText: string, nMode?: number) => Promise; 74 | const controlSendByHandle: (hWnd: number, hCtrl: number, szSendText: string, nMode?: number) => Promise; 75 | const controlSetText: (szTitle: string, szText: string | undefined, szControl: string, szControlText: string) => Promise; 76 | const controlSetTextByHandle: (hWnd: number, hCtrl: number, szControlText: string) => Promise; 77 | const controlShow: (szTitle: string, szText: string | undefined, szControl: string) => Promise; 78 | const controlShowByHandle: (hWnd: number, hCtrl: number) => Promise; 79 | const controlTreeView: (szTitle: string, szText: string | undefined, szControl: string, szCommand: string, szExtra1?: string, szExtra2?: string, nBufSize?: number) => Promise; 80 | const controlTreeViewByHandle: (hWnd: number, hCtrl: number, szCommand: string, szExtra1?: string, szExtra2?: string, nBufSize?: number) => Promise; 81 | const driveMapAdd: (szDevice: string, szShare: string, nFlags: number, szUser?: string, szPwd?: string, nBufSize?: number) => Promise; 82 | const driveMapDel: (szDevice: string) => Promise; 83 | const driveMapGet: (szDevice: string, nBufSize?: number) => Promise; 84 | const isAdmin: () => Promise; 85 | const mouseClick: (szButton?: string, nX?: number, nY?: number, nClicks?: number, nSpeed?: number) => Promise; 86 | const mouseClickDrag: (szButton: string, nX1: number, nY1: number, nX2: number, nY2: number, nSpeed?: number) => Promise; 87 | const mouseDown: (szButton?: string) => Promise; 88 | const mouseGetCursor: () => Promise; 89 | const mouseGetPos: () => Promise; 90 | const mouseMove: (nX: number, nY: number, nSpeed?: number) => Promise; 91 | const mouseUp: (szButton?: string) => Promise; 92 | const mouseWheel: (szDirection: string, nClicks: number) => Promise; 93 | const opt: (szOption: string, nValue: number) => Promise; 94 | const pixelChecksum: (lpRect: Rect, nStep?: number) => Promise; 95 | const pixelGetColor: (nX: number, nY: number) => Promise; 96 | const pixelSearch: (lpRect: Rect, nCol: number, nVar?: number, nStep?: number) => Promise; 97 | const processClose: (szProcess: string) => Promise; 98 | const processExists: (szProcess: string) => Promise; 99 | const processSetPriority: (szProcess: string, nPriority: number) => Promise; 100 | const processWait: (szProcess: string, nTimeout?: number) => Promise; 101 | const processWaitClose: (szProcess: string, nTimeout?: number) => Promise; 102 | const run: (szProgram: string, szDir?: string, nShowFlag?: number) => Promise; 103 | const runWait: (szProgram: string, szDir?: string, nShowFlag?: number) => Promise; 104 | const runAs: (szUser: string, szDomain: string, szPassword: string, nLogonFlag: number, szProgram: string, szDir?: string, nShowFlag?: number) => Promise; 105 | const runAsWait: (szUser: string, szDomain: string, szPassword: string, nLogonFlag: number, szProgram: string, szDir?: string, nShowFlag?: number) => Promise; 106 | const send: (szSendText: string, nMode?: number) => Promise; 107 | const shutdown: (nFlags: number) => Promise; 108 | const sleep: (nMilliseconds: number) => Promise; 109 | const statusbarGetText: (szTitle: string, szText?: string, nPart?: number, nBufSize?: number) => Promise; 110 | const statusbarGetTextByHandle: (hWnd: number, nPart?: number, nBufSize?: number) => Promise; 111 | const toolTip: (szTip: string, nX?: number, nY?: number) => Promise; 112 | const winActivate: (szTitle: string, szText?: string) => Promise; 113 | const winActivateByHandle: (hWnd: number) => Promise; 114 | const winActive: (szTitle: string, szText: string) => Promise; 115 | const winActiveByHandle: (hWnd: number) => Promise; 116 | const winClose: (szTitle: string, szText?: string) => Promise; 117 | const winCloseByHandle: (hWnd: number) => Promise; 118 | const winExists: (szTitle: string, szText?: string) => Promise; 119 | const winExistsByHandle: (hWnd: number) => Promise; 120 | const winGetCaretPos: () => Promise; 121 | const winGetClassList: (szTitle: string, szText?: string, nBufSize?: number) => Promise; 122 | const winGetClassListByHandle: (hWnd: number, nBufSize?: number) => Promise; 123 | const winGetClientSize: (szTitle: string, szText?: string) => Promise; 124 | const winGetClientSizeByHandle: (hWnd: number) => Promise; 125 | const winGetHandle: (szTitle: string, szText?: string) => Promise; 126 | const winGetHandleAsText: (szTitle: string, szText?: string, nBufSize?: number) => Promise; 127 | const winGetPos: (szTitle: string, szText?: string) => Promise; 128 | const winGetPosByHandle: (hWnd: number) => Promise; 129 | const winGetProcess: (szTitle: string, szText?: string) => Promise; 130 | const winGetProcessByHandle: (hWnd: number) => Promise; 131 | const winGetState: (szTitle: string, szText?: string) => Promise; 132 | const winGetStateByHandle: (hWnd: number) => Promise; 133 | const winGetText: (szTitle: string, szText?: string, nBufSize?: number) => Promise; 134 | const winGetTextByHandle: (hWnd: number, nBufSize?: number) => Promise; 135 | const winGetTitle: (szTitle: string, szText?: string, nBufSize?: number) => Promise; 136 | const winGetTitleByHandle: (hWnd: number, nBufSize?: number) => Promise; 137 | const winKill: (szTitle: string, szText?: string) => Promise; 138 | const winKillByHandle: (hWnd: number) => Promise; 139 | const winMenuSelectItem: (szTitle: string, szText: string | undefined, szItem1: string, szItem2?: string, szItem3?: string, szItem4?: string, szItem5?: string, szItem6?: string, szItem7?: string, szItem8?: string) => Promise; 140 | const winMenuSelectItemByHandle: (hWnd: number, szItem1: string, szItem2?: string, szItem3?: string, szItem4?: string, szItem5?: string, szItem6?: string, szItem7?: string, szItem8?: string) => Promise; 141 | const winMinimizeAll: () => Promise; 142 | const winMinimizeAllUndo: () => Promise; 143 | const winMove: (szTitle: string, szText: string | undefined, nX: number, nY: number, nWidth?: number, nHeight?: number) => Promise; 144 | const winMoveByHandle: (hWnd: number, nX: number, nY: number, nWidth?: number, nHeight?: number) => Promise; 145 | const winSetOnTop: (szTitle: string, szText: string | undefined, nFlag: number) => Promise; 146 | const winSetOnTopByHandle: (hWnd: number, nFlag: number) => Promise; 147 | const winSetState: (szTitle: string, szText: string | undefined, nFlags: number) => Promise; 148 | const winSetStateByHandle: (hWnd: number, nFlags: number) => Promise; 149 | const winSetTitle: (szTitle: string, szText: string | undefined, szNewTitle: string) => Promise; 150 | const winSetTitleByHandle: (hWnd: number, szNewTitle: string) => Promise; 151 | const winSetTrans: (szTitle: string, szText: string | undefined, nTrans: number) => Promise; 152 | const winSetTransByHandle: (hWnd: number, nTrans: number) => Promise; 153 | const winWait: (szTitle: string, szText?: string, nTimeout?: number) => Promise; 154 | const winWaitByHandle: (hWnd: number, nTimeout?: number) => Promise; 155 | const winWaitActive: (szTitle: string, szText?: string, nTimeout?: number) => Promise; 156 | const winWaitActiveByHandle: (hWnd: number, nTimeout?: number) => Promise; 157 | const winWaitClose: (szTitle: string, szText?: string, nTimeout?: number) => Promise; 158 | const winWaitCloseByHandle: (hWnd: number, nTimeout?: number) => Promise; 159 | const winWaitNotActive: (szTitle: string, szText?: string, nTimeout?: number) => Promise; 160 | const winWaitNotActiveByHandle: (hWnd: number, nTimeout?: number) => Promise; 161 | ``` 162 | 163 | ## Support 164 | If you encounter any issues or have questions, feel free to [open an issue](https://github.com/nullmastermind/node-autoit-koffi/issues) on GitHub. 165 | 166 | --- 167 | 168 | By incorporating Node AutoIt Koffi into your Node.js projects, you can automate Windows GUI tasks efficiently and effectively. Happy coding! 🚀 169 | -------------------------------------------------------------------------------- /dlls/AutoItX3.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nullmastermind/node-autoit-koffi/be9281a0d1f3e49e6752d6ede9c3b3e0e454b7e4/dlls/AutoItX3.dll -------------------------------------------------------------------------------- /dlls/AutoItX3_DLL.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | /////////////////////////////////////////////////////////////////////////////// 4 | // 5 | // AutoItX v3 6 | // 7 | // Copyright (C)1999-2013: 8 | // - Jonathan Bennett 9 | // - See "AUTHORS.txt" for contributors. 10 | // 11 | // This file is part of AutoItX. Use of this file and the AutoItX DLL is subject 12 | // to the terms of the AutoItX license details of which can be found in the helpfile. 13 | // 14 | // When using the AutoItX3.dll as a standard DLL this file contains the definitions, 15 | // and function declarations required to use the DLL and AutoItX3_DLL.lib file. 16 | // 17 | /////////////////////////////////////////////////////////////////////////////// 18 | 19 | 20 | #ifdef __cplusplus 21 | #define AU3_API extern "C" 22 | #else 23 | #define AU3_API 24 | #endif 25 | 26 | 27 | // Definitions 28 | #define AU3_INTDEFAULT (-2147483647) // "Default" value for _some_ int parameters (largest negative number) 29 | 30 | // 31 | // nBufSize 32 | // When used for specifying the size of a resulting string buffer this is the number of CHARACTERS 33 | // in that buffer, including the null terminator. For example: 34 | // 35 | // WCHAR szBuffer[10]; 36 | // AU3_ClipGet(szBuffer, 10); 37 | // 38 | // The resulting string will be truncated at 9 characters with the the terminating null in the 10th. 39 | // 40 | 41 | 42 | /////////////////////////////////////////////////////////////////////////////// 43 | // Exported functions 44 | /////////////////////////////////////////////////////////////////////////////// 45 | 46 | #include 47 | 48 | AU3_API void WINAPI AU3_Init(void); 49 | AU3_API int AU3_error(void); 50 | 51 | AU3_API int WINAPI AU3_AutoItSetOption(LPCWSTR szOption, int nValue); 52 | 53 | AU3_API void WINAPI AU3_ClipGet(LPWSTR szClip, int nBufSize); 54 | AU3_API void WINAPI AU3_ClipPut(LPCWSTR szClip); 55 | AU3_API int WINAPI AU3_ControlClick(LPCWSTR szTitle, LPCWSTR szText, LPCWSTR szControl, LPCWSTR szButton, int nNumClicks, int nX = AU3_INTDEFAULT, int nY = AU3_INTDEFAULT); 56 | AU3_API int WINAPI AU3_ControlClickByHandle(HWND hWnd, HWND hCtrl, LPCWSTR szButton, int nNumClicks, int nX = AU3_INTDEFAULT, int nY = AU3_INTDEFAULT); 57 | AU3_API void WINAPI AU3_ControlCommand(LPCWSTR szTitle, LPCWSTR szText, LPCWSTR szControl, LPCWSTR szCommand, LPCWSTR szExtra, LPWSTR szResult, int nBufSize); 58 | AU3_API void WINAPI AU3_ControlCommandByHandle(HWND hWnd, HWND hCtrl, LPCWSTR szCommand, LPCWSTR szExtra, LPWSTR szResult, int nBufSize); 59 | AU3_API void WINAPI AU3_ControlListView(LPCWSTR szTitle, LPCWSTR szText, LPCWSTR szControl, LPCWSTR szCommand, LPCWSTR szExtra1, LPCWSTR szExtra2, LPWSTR szResult, int nBufSize); 60 | AU3_API void WINAPI AU3_ControlListViewByHandle(HWND hWnd, HWND hCtrl, LPCWSTR szCommand, LPCWSTR szExtra1, LPCWSTR szExtra2, LPWSTR szResult, int nBufSize); 61 | AU3_API int WINAPI AU3_ControlDisable(LPCWSTR szTitle, LPCWSTR szText, LPCWSTR szControl); 62 | AU3_API int WINAPI AU3_ControlDisableByHandle(HWND hWnd, HWND hCtrl); 63 | AU3_API int WINAPI AU3_ControlEnable(LPCWSTR szTitle, LPCWSTR szText, LPCWSTR szControl); 64 | AU3_API int WINAPI AU3_ControlEnableByHandle(HWND hWnd, HWND hCtrl); 65 | AU3_API int WINAPI AU3_ControlFocus(LPCWSTR szTitle, LPCWSTR szText, LPCWSTR szControl); 66 | AU3_API int WINAPI AU3_ControlFocusByHandle(HWND hWnd, HWND hCtrl); 67 | AU3_API void WINAPI AU3_ControlGetFocus(LPCWSTR szTitle, LPCWSTR szText, LPWSTR szControlWithFocus, int nBufSize); 68 | AU3_API void WINAPI AU3_ControlGetFocusByHandle(HWND hWnd, LPWSTR szControlWithFocus, int nBufSize); 69 | AU3_API HWND WINAPI AU3_ControlGetHandle(HWND hWnd, LPCWSTR szControl); 70 | AU3_API void WINAPI AU3_ControlGetHandleAsText(LPCWSTR szTitle, /*[in,defaultvalue("")]*/LPCWSTR szText, LPCWSTR szControl, LPWSTR szRetText, int nBufSize); 71 | AU3_API int WINAPI AU3_ControlGetPos(LPCWSTR szTitle, LPCWSTR szText, LPCWSTR szControl, LPRECT lpRect); 72 | AU3_API int WINAPI AU3_ControlGetPosByHandle(HWND hWnd, HWND hCtrl, LPRECT lpRect); 73 | AU3_API void WINAPI AU3_ControlGetText(LPCWSTR szTitle, LPCWSTR szText, LPCWSTR szControl, LPWSTR szControlText, int nBufSize); 74 | AU3_API void WINAPI AU3_ControlGetTextByHandle(HWND hWnd, HWND hCtrl, LPWSTR szControlText, int nBufSize); 75 | AU3_API int WINAPI AU3_ControlHide(LPCWSTR szTitle, LPCWSTR szText, LPCWSTR szControl); 76 | AU3_API int WINAPI AU3_ControlHideByHandle(HWND hWnd, HWND hCtrl); 77 | AU3_API int WINAPI AU3_ControlMove(LPCWSTR szTitle, LPCWSTR szText, LPCWSTR szControl, int nX, int nY, int nWidth = -1, int nHeight = -1); 78 | AU3_API int WINAPI AU3_ControlMoveByHandle(HWND hWnd, HWND hCtrl, int nX, int nY, int nWidth = -1, int nHeight = -1); 79 | AU3_API int WINAPI AU3_ControlSend(LPCWSTR szTitle, LPCWSTR szText, LPCWSTR szControl, LPCWSTR szSendText, int nMode = 0); 80 | AU3_API int WINAPI AU3_ControlSendByHandle(HWND hWnd, HWND hCtrl, LPCWSTR szSendText, int nMode = 0); 81 | AU3_API int WINAPI AU3_ControlSetText(LPCWSTR szTitle, LPCWSTR szText, LPCWSTR szControl, LPCWSTR szControlText); 82 | AU3_API int WINAPI AU3_ControlSetTextByHandle(HWND hWnd, HWND hCtrl, LPCWSTR szControlText); 83 | AU3_API int WINAPI AU3_ControlShow(LPCWSTR szTitle, LPCWSTR szText, LPCWSTR szControl); 84 | AU3_API int WINAPI AU3_ControlShowByHandle(HWND hWnd, HWND hCtrl); 85 | AU3_API void WINAPI AU3_ControlTreeView(LPCWSTR szTitle, LPCWSTR szText, LPCWSTR szControl, LPCWSTR szCommand, LPCWSTR szExtra1, LPCWSTR szExtra2, LPWSTR szResult, int nBufSize); 86 | AU3_API void WINAPI AU3_ControlTreeViewByHandle(HWND hWnd, HWND hCtrl, LPCWSTR szCommand, LPCWSTR szExtra1, LPCWSTR szExtra2, LPWSTR szResult, int nBufSize); 87 | 88 | AU3_API void WINAPI AU3_DriveMapAdd(LPCWSTR szDevice, LPCWSTR szShare, int nFlags, /*[in,defaultvalue("")]*/LPCWSTR szUser, /*[in,defaultvalue("")]*/LPCWSTR szPwd, LPWSTR szResult, int nBufSize); 89 | AU3_API int WINAPI AU3_DriveMapDel(LPCWSTR szDevice); 90 | AU3_API void WINAPI AU3_DriveMapGet(LPCWSTR szDevice, LPWSTR szMapping, int nBufSize); 91 | 92 | AU3_API int WINAPI AU3_IsAdmin(void); 93 | 94 | AU3_API int WINAPI AU3_MouseClick(/*[in,defaultvalue("LEFT")]*/LPCWSTR szButton, int nX = AU3_INTDEFAULT, int nY = AU3_INTDEFAULT, int nClicks = 1, int nSpeed = -1); 95 | AU3_API int WINAPI AU3_MouseClickDrag(LPCWSTR szButton, int nX1, int nY1, int nX2, int nY2, int nSpeed = -1); 96 | AU3_API void WINAPI AU3_MouseDown(/*[in,defaultvalue("LEFT")]*/LPCWSTR szButton); 97 | AU3_API int WINAPI AU3_MouseGetCursor(void); 98 | AU3_API void WINAPI AU3_MouseGetPos(LPPOINT lpPoint); 99 | AU3_API int WINAPI AU3_MouseMove(int nX, int nY, int nSpeed = -1); 100 | AU3_API void WINAPI AU3_MouseUp(/*[in,defaultvalue("LEFT")]*/LPCWSTR szButton); 101 | AU3_API void WINAPI AU3_MouseWheel(LPCWSTR szDirection, int nClicks); 102 | 103 | AU3_API int WINAPI AU3_Opt(LPCWSTR szOption, int nValue); 104 | 105 | AU3_API unsigned int WINAPI AU3_PixelChecksum(LPRECT lpRect, int nStep = 1); 106 | AU3_API int WINAPI AU3_PixelGetColor(int nX, int nY); 107 | AU3_API void WINAPI AU3_PixelSearch(LPRECT lpRect, int nCol, /*default 0*/int nVar, /*default 1*/int nStep, LPPOINT pPointResult); 108 | AU3_API int WINAPI AU3_ProcessClose(LPCWSTR szProcess); 109 | AU3_API int WINAPI AU3_ProcessExists(LPCWSTR szProcess); 110 | AU3_API int WINAPI AU3_ProcessSetPriority(LPCWSTR szProcess, int nPriority); 111 | AU3_API int WINAPI AU3_ProcessWait(LPCWSTR szProcess, int nTimeout = 0); 112 | AU3_API int WINAPI AU3_ProcessWaitClose(LPCWSTR szProcess, int nTimeout = 0); 113 | 114 | AU3_API int WINAPI AU3_Run(LPCWSTR szProgram, /*[in,defaultvalue("")]*/LPCWSTR szDir, int nShowFlag = SW_SHOWNORMAL); 115 | AU3_API int WINAPI AU3_RunWait(LPCWSTR szProgram, /*[in,defaultvalue("")]*/LPCWSTR szDir, int nShowFlag = SW_SHOWNORMAL); 116 | AU3_API int WINAPI AU3_RunAs(LPCWSTR szUser, LPCWSTR szDomain, LPCWSTR szPassword, int nLogonFlag, LPCWSTR szProgram, /*[in,defaultvalue("")]*/LPCWSTR szDir, int nShowFlag = SW_SHOWNORMAL); 117 | AU3_API int WINAPI AU3_RunAsWait(LPCWSTR szUser, LPCWSTR szDomain, LPCWSTR szPassword, int nLogonFlag, LPCWSTR szProgram, /*[in,defaultvalue("")]*/LPCWSTR szDir, int nShowFlag = SW_SHOWNORMAL); 118 | 119 | AU3_API void WINAPI AU3_Send(LPCWSTR szSendText, int nMode = 0); 120 | AU3_API int WINAPI AU3_Shutdown(int nFlags); 121 | AU3_API void WINAPI AU3_Sleep(int nMilliseconds); 122 | AU3_API int WINAPI AU3_StatusbarGetText(LPCWSTR szTitle, /*[in,defaultvalue("")]*/LPCWSTR szText, /*[in,defaultvalue(1)]*/int nPart, LPWSTR szStatusText, int nBufSize); 123 | AU3_API int WINAPI AU3_StatusbarGetTextByHandle(HWND hWnd, /*[in,defaultvalue(1)]*/int nPart, LPWSTR szStatusText, int nBufSize); 124 | 125 | AU3_API void WINAPI AU3_ToolTip(LPCWSTR szTip, int nX = AU3_INTDEFAULT, int nY = AU3_INTDEFAULT); 126 | 127 | AU3_API int WINAPI AU3_WinActivate(LPCWSTR szTitle, /*[in,defaultvalue("")]*/LPCWSTR szText); 128 | AU3_API int WINAPI AU3_WinActivateByHandle(HWND hWnd); 129 | AU3_API int WINAPI AU3_WinActive(LPCWSTR szTitle, /*[in,defaultvalue("")]*/LPCWSTR szText); 130 | AU3_API int WINAPI AU3_WinActiveByHandle(HWND hWnd); 131 | AU3_API int WINAPI AU3_WinClose(LPCWSTR szTitle, /*[in,defaultvalue("")]*/LPCWSTR szText); 132 | AU3_API int WINAPI AU3_WinCloseByHandle(HWND hWnd); 133 | AU3_API int WINAPI AU3_WinExists(LPCWSTR szTitle, /*[in,defaultvalue("")]*/LPCWSTR szText); 134 | AU3_API int WINAPI AU3_WinExistsByHandle(HWND hWnd); 135 | AU3_API int WINAPI AU3_WinGetCaretPos(LPPOINT lpPoint); 136 | AU3_API void WINAPI AU3_WinGetClassList(LPCWSTR szTitle, /*[in,defaultvalue("")]*/LPCWSTR szText, LPWSTR szRetText, int nBufSize); 137 | AU3_API void WINAPI AU3_WinGetClassListByHandle(HWND hWnd, LPWSTR szRetText, int nBufSize); 138 | AU3_API int WINAPI AU3_WinGetClientSize(LPCWSTR szTitle, /*[in,defaultvalue("")]*/LPCWSTR szText, LPRECT lpRect); 139 | AU3_API int WINAPI AU3_WinGetClientSizeByHandle(HWND hWnd, LPRECT lpRect); 140 | AU3_API HWND WINAPI AU3_WinGetHandle(LPCWSTR szTitle, /*[in,defaultvalue("")]*/LPCWSTR szText); 141 | AU3_API void WINAPI AU3_WinGetHandleAsText(LPCWSTR szTitle, /*[in,defaultvalue("")]*/LPCWSTR szText, LPWSTR szRetText, int nBufSize); 142 | AU3_API int WINAPI AU3_WinGetPos(LPCWSTR szTitle, /*[in,defaultvalue("")]*/LPCWSTR szText, LPRECT lpRect); 143 | AU3_API int WINAPI AU3_WinGetPosByHandle(HWND hWnd, LPRECT lpRect); 144 | AU3_API DWORD WINAPI AU3_WinGetProcess(LPCWSTR szTitle, /*[in,defaultvalue("")]*/LPCWSTR szText); 145 | AU3_API DWORD WINAPI AU3_WinGetProcessByHandle(HWND hWnd); 146 | AU3_API int WINAPI AU3_WinGetState(LPCWSTR szTitle, /*[in,defaultvalue("")]*/LPCWSTR szText); 147 | AU3_API int WINAPI AU3_WinGetStateByHandle(HWND hWnd); 148 | AU3_API void WINAPI AU3_WinGetText(LPCWSTR szTitle, /*[in,defaultvalue("")]*/LPCWSTR szText, LPWSTR szRetText, int nBufSize); 149 | AU3_API void WINAPI AU3_WinGetTextByHandle(HWND hWnd, LPWSTR szRetText, int nBufSize); 150 | AU3_API void WINAPI AU3_WinGetTitle(LPCWSTR szTitle, /*[in,defaultvalue("")]*/LPCWSTR szText, LPWSTR szRetText, int nBufSize); 151 | AU3_API void WINAPI AU3_WinGetTitleByHandle(HWND hWnd, LPWSTR szRetText, int nBufSize); 152 | AU3_API int WINAPI AU3_WinKill(LPCWSTR szTitle, /*[in,defaultvalue("")]*/LPCWSTR szText); 153 | AU3_API int WINAPI AU3_WinKillByHandle(HWND hWnd); 154 | AU3_API int WINAPI AU3_WinMenuSelectItem(LPCWSTR szTitle, /*[in,defaultvalue("")]*/LPCWSTR szText, LPCWSTR szItem1, LPCWSTR szItem2, LPCWSTR szItem3, LPCWSTR szItem4, LPCWSTR szItem5, LPCWSTR szItem6, LPCWSTR szItem7, LPCWSTR szItem8); 155 | AU3_API int WINAPI AU3_WinMenuSelectItemByHandle(HWND hWnd, LPCWSTR szItem1, LPCWSTR szItem2, LPCWSTR szItem3, LPCWSTR szItem4, LPCWSTR szItem5, LPCWSTR szItem6, LPCWSTR szItem7, LPCWSTR szItem8); 156 | AU3_API void WINAPI AU3_WinMinimizeAll(); 157 | AU3_API void WINAPI AU3_WinMinimizeAllUndo(); 158 | AU3_API int WINAPI AU3_WinMove(LPCWSTR szTitle, /*[in,defaultvalue("")]*/LPCWSTR szText, int nX, int nY, int nWidth = -1, int nHeight = -1); 159 | AU3_API int WINAPI AU3_WinMoveByHandle(HWND hWnd, int nX, int nY, int nWidth = -1, int nHeight = -1); 160 | AU3_API int WINAPI AU3_WinSetOnTop(LPCWSTR szTitle, /*[in,defaultvalue("")]*/LPCWSTR szText, int nFlag); 161 | AU3_API int WINAPI AU3_WinSetOnTopByHandle(HWND hWnd, int nFlag); 162 | AU3_API int WINAPI AU3_WinSetState(LPCWSTR szTitle, /*[in,defaultvalue("")]*/LPCWSTR szText, int nFlags); 163 | AU3_API int WINAPI AU3_WinSetStateByHandle(HWND hWnd, int nFlags); 164 | AU3_API int WINAPI AU3_WinSetTitle(LPCWSTR szTitle,/*[in,defaultvalue("")]*/ LPCWSTR szText, LPCWSTR szNewTitle); 165 | AU3_API int WINAPI AU3_WinSetTitleByHandle(HWND hWnd, LPCWSTR szNewTitle); 166 | AU3_API int WINAPI AU3_WinSetTrans(LPCWSTR szTitle, /*[in,defaultvalue("")]*/LPCWSTR szText, int nTrans); 167 | AU3_API int WINAPI AU3_WinSetTransByHandle(HWND hWnd, int nTrans); 168 | AU3_API int WINAPI AU3_WinWait(LPCWSTR szTitle, /*[in,defaultvalue("")]*/LPCWSTR szText, int nTimeout = 0); 169 | AU3_API int WINAPI AU3_WinWaitByHandle(HWND hWnd, int nTimeout); 170 | AU3_API int WINAPI AU3_WinWaitActive(LPCWSTR szTitle, /*[in,defaultvalue("")]*/LPCWSTR szText, int nTimeout = 0); 171 | AU3_API int WINAPI AU3_WinWaitActiveByHandle(HWND hWnd, int nTimeout); 172 | AU3_API int WINAPI AU3_WinWaitClose(LPCWSTR szTitle, /*[in,defaultvalue("")]*/LPCWSTR szText, int nTimeout = 0); 173 | AU3_API int WINAPI AU3_WinWaitCloseByHandle(HWND hWnd, int nTimeout); 174 | AU3_API int WINAPI AU3_WinWaitNotActive(LPCWSTR szTitle, /*[in,defaultvalue("")]*/LPCWSTR szText, int nTimeout); 175 | AU3_API int WINAPI AU3_WinWaitNotActiveByHandle(HWND hWnd, int nTimeout = 0); 176 | 177 | /////////////////////////////////////////////////////////////////////////////// 178 | -------------------------------------------------------------------------------- /dlls/AutoItX3_x64.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nullmastermind/node-autoit-koffi/be9281a0d1f3e49e6752d6ede9c3b3e0e454b7e4/dlls/AutoItX3_x64.dll -------------------------------------------------------------------------------- /examples/index.test.js: -------------------------------------------------------------------------------- 1 | const test = require("node:test"); 2 | const { 3 | init, 4 | mouseMove, 5 | send, 6 | clipGet, 7 | sleep, 8 | mouseGetPos, 9 | winGetClientSize, 10 | } = require("../dist"); 11 | 12 | test("mouseMove", async () => { 13 | await init(); 14 | await mouseMove(0, 0); 15 | }); 16 | 17 | test("send", async () => { 18 | await init(); 19 | await sleep(3000); 20 | await send("Good job", 1); 21 | }); 22 | 23 | test("clipGet", async () => { 24 | await init(); 25 | const clipContent = await clipGet(); 26 | 27 | console.log("length: ", clipContent.length); 28 | console.log("content: ", clipContent); 29 | }); 30 | 31 | test("mouseGetPos", async () => { 32 | await init(); 33 | console.log(await mouseGetPos()); 34 | }); 35 | 36 | test("winGetClientSize", async () => { 37 | await init(); 38 | console.log(await winGetClientSize("Untitled - Notepad")); 39 | }); 40 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "node-autoit-koffi", 3 | "version": "1.0.5", 4 | "description": "This Node.js module provides support for all AutoIt functions, allowing users to automate Windows GUI tasks seamlessly.", 5 | "main": "dist/index.js", 6 | "types": "dist/index.d.ts", 7 | "license": "MIT", 8 | "scripts": { 9 | "build": "rimraf dist && tsc", 10 | "start": "npm run build && node dist/index.js" 11 | }, 12 | "dependencies": { 13 | "iconv-lite": "^0.6.3", 14 | "koffi": "^2.8.0", 15 | "lodash": "^4.17.21", 16 | "ref-napi": "^3.0.3" 17 | }, 18 | "devDependencies": { 19 | "@types/node": "^20.11.19", 20 | "prettier": "^3.2.5", 21 | "rimraf": "^5.0.5", 22 | "typescript": "^5.3.3" 23 | }, 24 | "keywords": [ 25 | "autoit", 26 | "napi", 27 | "nodejs", 28 | "ffi", 29 | "koffi" 30 | ], 31 | "readmeFilename": "README.md", 32 | "homepage": "https://github.com/nullmastermind/node-autoit-koffi", 33 | "repository": { 34 | "type": "git", 35 | "url": "git+https://github.com/nullmastermind/node-autoit-koffi.git" 36 | }, 37 | "author": { 38 | "name": "Van Dong", 39 | "email": "thenullmastermind@gmail.com", 40 | "url": "https://github.com/nullmastermind" 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { getDll, getWString } from "./util"; 2 | import * as koffi from "koffi"; 3 | import wchar from "./wchar"; 4 | 5 | const dll = getDll(); 6 | if (!dll) throw new Error("This operating system is not supported!"); 7 | const lib = koffi.load(dll); 8 | 9 | export type Point = { 10 | x: number; 11 | y: number; 12 | }; 13 | 14 | export type Rect = { 15 | left: number; 16 | top: number; 17 | right: number; 18 | bottom: number; 19 | }; 20 | 21 | koffi.struct("LPRECT", { 22 | left: "long", 23 | top: "long", 24 | right: "long", 25 | bottom: "long", 26 | }); 27 | koffi.struct("LPPOINT", { 28 | x: "long", 29 | y: "long", 30 | }); 31 | koffi.pointer("LPWSTR", "uint16_t*"); 32 | 33 | const fn: Record = {}; 34 | 35 | // Generated code: 36 | export const init = (): Promise => { 37 | if (!fn.hasOwnProperty("init")) { 38 | fn["init"] = lib.func("AU3_Init", "void", []); 39 | } 40 | 41 | return new Promise((resolve, reject) => { 42 | fn["init"].async((err: Error, res: any) => { 43 | if (err) reject(err); 44 | else resolve(res); 45 | }); 46 | }); 47 | }; 48 | 49 | export const error = (): Promise => { 50 | if (!fn.hasOwnProperty("error")) { 51 | fn["error"] = lib.func("AU3_error", "int", []); 52 | } 53 | 54 | return new Promise((resolve, reject) => { 55 | fn["error"].async((err: Error, res: any) => { 56 | if (err) reject(err); 57 | else resolve(res); 58 | }); 59 | }); 60 | }; 61 | 62 | export const autoItSetOption = ( 63 | szOption: string, 64 | nValue: number, 65 | ): Promise => { 66 | if (!fn.hasOwnProperty("autoItSetOption")) { 67 | fn["autoItSetOption"] = lib.func("AU3_AutoItSetOption", "int", [ 68 | "string16", 69 | "int", 70 | ]); 71 | } 72 | 73 | return new Promise((resolve, reject) => { 74 | fn["autoItSetOption"].async(szOption, nValue, (err: Error, res: any) => { 75 | if (err) reject(err); 76 | else resolve(res); 77 | }); 78 | }); 79 | }; 80 | 81 | export const clipGet = (nBufSize: number = 512): Promise => { 82 | if (!fn.hasOwnProperty("clipGet")) { 83 | fn["clipGet"] = lib.func("AU3_ClipGet", "void", ["LPWSTR", "int"]); 84 | } 85 | let result = Buffer.alloc(nBufSize * wchar.size); 86 | 87 | return new Promise((resolve, reject) => { 88 | fn["clipGet"].async(result, nBufSize, (err: Error, _: any) => { 89 | if (err) reject(err); 90 | else { 91 | const content = getWString(result); 92 | 93 | if (content.length === nBufSize - 1) { 94 | resolve(clipGet(nBufSize * 2)); 95 | } else { 96 | resolve(content); 97 | } 98 | } 99 | }); 100 | }); 101 | }; 102 | 103 | export const clipPut = (szClip: string): Promise => { 104 | if (!fn.hasOwnProperty("clipPut")) { 105 | fn["clipPut"] = lib.func("AU3_ClipPut", "void", ["string16"]); 106 | } 107 | 108 | return new Promise((resolve, reject) => { 109 | fn["clipPut"].async(szClip, (err: Error, res: any) => { 110 | if (err) reject(err); 111 | else resolve(res); 112 | }); 113 | }); 114 | }; 115 | 116 | export const controlClick = ( 117 | szTitle: string, 118 | szText: string = "", 119 | szControl: string, 120 | szButton: string = "LEFT", 121 | nNumClicks: number = 1, 122 | nX: number = -2147483647, 123 | nY: number = -2147483647, 124 | ): Promise => { 125 | if (!fn.hasOwnProperty("controlClick")) { 126 | fn["controlClick"] = lib.func("AU3_ControlClick", "int", [ 127 | "string16", 128 | "string16", 129 | "string16", 130 | "string16", 131 | "int", 132 | "int", 133 | "int", 134 | ]); 135 | } 136 | 137 | return new Promise((resolve, reject) => { 138 | fn["controlClick"].async( 139 | szTitle, 140 | szText, 141 | szControl, 142 | szButton, 143 | nNumClicks, 144 | nX, 145 | nY, 146 | (err: Error, res: any) => { 147 | if (err) reject(err); 148 | else resolve(res); 149 | }, 150 | ); 151 | }); 152 | }; 153 | 154 | export const controlClickByHandle = ( 155 | hWnd: number, 156 | hCtrl: number, 157 | szButton: string = "LEFT", 158 | nNumClicks: number = 1, 159 | nX: number = -2147483647, 160 | nY: number = -2147483647, 161 | ): Promise => { 162 | if (!fn.hasOwnProperty("controlClickByHandle")) { 163 | fn["controlClickByHandle"] = lib.func("AU3_ControlClickByHandle", "int", [ 164 | "int", 165 | "int", 166 | "string16", 167 | "int", 168 | "int", 169 | "int", 170 | ]); 171 | } 172 | 173 | return new Promise((resolve, reject) => { 174 | fn["controlClickByHandle"].async( 175 | hWnd, 176 | hCtrl, 177 | szButton, 178 | nNumClicks, 179 | nX, 180 | nY, 181 | (err: Error, res: any) => { 182 | if (err) reject(err); 183 | else resolve(res); 184 | }, 185 | ); 186 | }); 187 | }; 188 | 189 | export const controlCommand = ( 190 | szTitle: string, 191 | szText: string = "", 192 | szControl: string, 193 | szCommand: string, 194 | szExtra: string = "", 195 | nBufSize: number = 256, 196 | ): Promise => { 197 | if (!fn.hasOwnProperty("controlCommand")) { 198 | fn["controlCommand"] = lib.func("AU3_ControlCommand", "void", [ 199 | "string16", 200 | "string16", 201 | "string16", 202 | "string16", 203 | "string16", 204 | "LPWSTR", 205 | "int", 206 | ]); 207 | } 208 | let result = Buffer.alloc(nBufSize * wchar.size); 209 | 210 | return new Promise((resolve, reject) => { 211 | fn["controlCommand"].async( 212 | szTitle, 213 | szText, 214 | szControl, 215 | szCommand, 216 | szExtra, 217 | result, 218 | nBufSize, 219 | (err: Error, _: any) => { 220 | if (err) reject(err); 221 | else resolve(getWString(result)); 222 | }, 223 | ); 224 | }); 225 | }; 226 | 227 | export const controlCommandByHandle = ( 228 | hWnd: number, 229 | hCtrl: number, 230 | szCommand: string, 231 | szExtra: string = "", 232 | nBufSize: number = 256, 233 | ): Promise => { 234 | if (!fn.hasOwnProperty("controlCommandByHandle")) { 235 | fn["controlCommandByHandle"] = lib.func( 236 | "AU3_ControlCommandByHandle", 237 | "void", 238 | ["int", "int", "string16", "string16", "LPWSTR", "int"], 239 | ); 240 | } 241 | let result = Buffer.alloc(nBufSize * wchar.size); 242 | 243 | return new Promise((resolve, reject) => { 244 | fn["controlCommandByHandle"].async( 245 | hWnd, 246 | hCtrl, 247 | szCommand, 248 | szExtra, 249 | result, 250 | nBufSize, 251 | (err: Error, _: any) => { 252 | if (err) reject(err); 253 | else resolve(getWString(result)); 254 | }, 255 | ); 256 | }); 257 | }; 258 | 259 | export const controlListView = ( 260 | szTitle: string, 261 | szText: string = "", 262 | szControl: string, 263 | szCommand: string, 264 | szExtra1: string = "", 265 | szExtra2: string = "", 266 | nBufSize: number = 256, 267 | ): Promise => { 268 | if (!fn.hasOwnProperty("controlListView")) { 269 | fn["controlListView"] = lib.func("AU3_ControlListView", "void", [ 270 | "string16", 271 | "string16", 272 | "string16", 273 | "string16", 274 | "string16", 275 | "string16", 276 | "LPWSTR", 277 | "int", 278 | ]); 279 | } 280 | let result = Buffer.alloc(nBufSize * wchar.size); 281 | 282 | return new Promise((resolve, reject) => { 283 | fn["controlListView"].async( 284 | szTitle, 285 | szText, 286 | szControl, 287 | szCommand, 288 | szExtra1, 289 | szExtra2, 290 | result, 291 | nBufSize, 292 | (err: Error, _: any) => { 293 | if (err) reject(err); 294 | else resolve(getWString(result)); 295 | }, 296 | ); 297 | }); 298 | }; 299 | 300 | export const controlListViewByHandle = ( 301 | hWnd: number, 302 | hCtrl: number, 303 | szCommand: string, 304 | szExtra1: string = "", 305 | szExtra2: string = "", 306 | nBufSize: number = 256, 307 | ): Promise => { 308 | if (!fn.hasOwnProperty("controlListViewByHandle")) { 309 | fn["controlListViewByHandle"] = lib.func( 310 | "AU3_ControlListViewByHandle", 311 | "void", 312 | ["int", "int", "string16", "string16", "string16", "LPWSTR", "int"], 313 | ); 314 | } 315 | let result = Buffer.alloc(nBufSize * wchar.size); 316 | 317 | return new Promise((resolve, reject) => { 318 | fn["controlListViewByHandle"].async( 319 | hWnd, 320 | hCtrl, 321 | szCommand, 322 | szExtra1, 323 | szExtra2, 324 | result, 325 | nBufSize, 326 | (err: Error, _: any) => { 327 | if (err) reject(err); 328 | else resolve(getWString(result)); 329 | }, 330 | ); 331 | }); 332 | }; 333 | 334 | export const controlDisable = ( 335 | szTitle: string, 336 | szText: string = "", 337 | szControl: string, 338 | ): Promise => { 339 | if (!fn.hasOwnProperty("controlDisable")) { 340 | fn["controlDisable"] = lib.func("AU3_ControlDisable", "int", [ 341 | "string16", 342 | "string16", 343 | "string16", 344 | ]); 345 | } 346 | 347 | return new Promise((resolve, reject) => { 348 | fn["controlDisable"].async( 349 | szTitle, 350 | szText, 351 | szControl, 352 | (err: Error, res: any) => { 353 | if (err) reject(err); 354 | else resolve(res); 355 | }, 356 | ); 357 | }); 358 | }; 359 | 360 | export const controlDisableByHandle = ( 361 | hWnd: number, 362 | hCtrl: number, 363 | ): Promise => { 364 | if (!fn.hasOwnProperty("controlDisableByHandle")) { 365 | fn["controlDisableByHandle"] = lib.func( 366 | "AU3_ControlDisableByHandle", 367 | "int", 368 | ["int", "int"], 369 | ); 370 | } 371 | 372 | return new Promise((resolve, reject) => { 373 | fn["controlDisableByHandle"].async(hWnd, hCtrl, (err: Error, res: any) => { 374 | if (err) reject(err); 375 | else resolve(res); 376 | }); 377 | }); 378 | }; 379 | 380 | export const controlEnable = ( 381 | szTitle: string, 382 | szText: string = "", 383 | szControl: string, 384 | ): Promise => { 385 | if (!fn.hasOwnProperty("controlEnable")) { 386 | fn["controlEnable"] = lib.func("AU3_ControlEnable", "int", [ 387 | "string16", 388 | "string16", 389 | "string16", 390 | ]); 391 | } 392 | 393 | return new Promise((resolve, reject) => { 394 | fn["controlEnable"].async( 395 | szTitle, 396 | szText, 397 | szControl, 398 | (err: Error, res: any) => { 399 | if (err) reject(err); 400 | else resolve(res); 401 | }, 402 | ); 403 | }); 404 | }; 405 | 406 | export const controlEnableByHandle = ( 407 | hWnd: number, 408 | hCtrl: number, 409 | ): Promise => { 410 | if (!fn.hasOwnProperty("controlEnableByHandle")) { 411 | fn["controlEnableByHandle"] = lib.func("AU3_ControlEnableByHandle", "int", [ 412 | "int", 413 | "int", 414 | ]); 415 | } 416 | 417 | return new Promise((resolve, reject) => { 418 | fn["controlEnableByHandle"].async(hWnd, hCtrl, (err: Error, res: any) => { 419 | if (err) reject(err); 420 | else resolve(res); 421 | }); 422 | }); 423 | }; 424 | 425 | export const controlFocus = ( 426 | szTitle: string, 427 | szText: string = "", 428 | szControl: string, 429 | ): Promise => { 430 | if (!fn.hasOwnProperty("controlFocus")) { 431 | fn["controlFocus"] = lib.func("AU3_ControlFocus", "int", [ 432 | "string16", 433 | "string16", 434 | "string16", 435 | ]); 436 | } 437 | 438 | return new Promise((resolve, reject) => { 439 | fn["controlFocus"].async( 440 | szTitle, 441 | szText, 442 | szControl, 443 | (err: Error, res: any) => { 444 | if (err) reject(err); 445 | else resolve(res); 446 | }, 447 | ); 448 | }); 449 | }; 450 | 451 | export const controlFocusByHandle = ( 452 | hWnd: number, 453 | hCtrl: number, 454 | ): Promise => { 455 | if (!fn.hasOwnProperty("controlFocusByHandle")) { 456 | fn["controlFocusByHandle"] = lib.func("AU3_ControlFocusByHandle", "int", [ 457 | "int", 458 | "int", 459 | ]); 460 | } 461 | 462 | return new Promise((resolve, reject) => { 463 | fn["controlFocusByHandle"].async(hWnd, hCtrl, (err: Error, res: any) => { 464 | if (err) reject(err); 465 | else resolve(res); 466 | }); 467 | }); 468 | }; 469 | 470 | export const controlGetFocus = ( 471 | szTitle: string, 472 | szText: string = "", 473 | nBufSize: number = 256, 474 | ): Promise => { 475 | if (!fn.hasOwnProperty("controlGetFocus")) { 476 | fn["controlGetFocus"] = lib.func("AU3_ControlGetFocus", "void", [ 477 | "string16", 478 | "string16", 479 | "LPWSTR", 480 | "int", 481 | ]); 482 | } 483 | let result = Buffer.alloc(nBufSize * wchar.size); 484 | 485 | return new Promise((resolve, reject) => { 486 | fn["controlGetFocus"].async( 487 | szTitle, 488 | szText, 489 | result, 490 | nBufSize, 491 | (err: Error, _: any) => { 492 | if (err) reject(err); 493 | else resolve(getWString(result)); 494 | }, 495 | ); 496 | }); 497 | }; 498 | 499 | export const controlGetFocusByHandle = ( 500 | hWnd: number, 501 | nBufSize: number = 256, 502 | ): Promise => { 503 | if (!fn.hasOwnProperty("controlGetFocusByHandle")) { 504 | fn["controlGetFocusByHandle"] = lib.func( 505 | "AU3_ControlGetFocusByHandle", 506 | "void", 507 | ["int", "LPWSTR", "int"], 508 | ); 509 | } 510 | let result = Buffer.alloc(nBufSize * wchar.size); 511 | 512 | return new Promise((resolve, reject) => { 513 | fn["controlGetFocusByHandle"].async( 514 | hWnd, 515 | result, 516 | nBufSize, 517 | (err: Error, _: any) => { 518 | if (err) reject(err); 519 | else resolve(getWString(result)); 520 | }, 521 | ); 522 | }); 523 | }; 524 | 525 | export const controlGetHandle = ( 526 | hWnd: number, 527 | szControl: string, 528 | ): Promise => { 529 | if (!fn.hasOwnProperty("controlGetHandle")) { 530 | fn["controlGetHandle"] = lib.func("AU3_ControlGetHandle", "int", [ 531 | "int", 532 | "string16", 533 | ]); 534 | } 535 | 536 | return new Promise((resolve, reject) => { 537 | fn["controlGetHandle"].async(hWnd, szControl, (err: Error, res: any) => { 538 | if (err) reject(err); 539 | else resolve(res); 540 | }); 541 | }); 542 | }; 543 | 544 | export const controlGetHandleAsText = ( 545 | szTitle: string, 546 | szText: string = "", 547 | szControl: string, 548 | nBufSize: number = 256, 549 | ): Promise => { 550 | if (!fn.hasOwnProperty("controlGetHandleAsText")) { 551 | fn["controlGetHandleAsText"] = lib.func( 552 | "AU3_ControlGetHandleAsText", 553 | "void", 554 | ["string16", "string16", "string16", "LPWSTR", "int"], 555 | ); 556 | } 557 | let result = Buffer.alloc(nBufSize * wchar.size); 558 | 559 | return new Promise((resolve, reject) => { 560 | fn["controlGetHandleAsText"].async( 561 | szTitle, 562 | szText, 563 | szControl, 564 | result, 565 | nBufSize, 566 | (err: Error, _: any) => { 567 | if (err) reject(err); 568 | else resolve(getWString(result)); 569 | }, 570 | ); 571 | }); 572 | }; 573 | 574 | export const controlGetPos = ( 575 | szTitle: string, 576 | szText: string = "", 577 | szControl: string, 578 | ): Promise => { 579 | if (!fn.hasOwnProperty("controlGetPos")) { 580 | fn["controlGetPos"] = lib.func("AU3_ControlGetPos", "int", [ 581 | "string16", 582 | "string16", 583 | "string16", 584 | "_Out_ LPRECT*", 585 | ]); 586 | } 587 | let result: any = {}; 588 | 589 | return new Promise((resolve, reject) => { 590 | fn["controlGetPos"].async( 591 | szTitle, 592 | szText, 593 | szControl, 594 | result, 595 | (err: Error, _: any) => { 596 | if (err) reject(err); 597 | else resolve(result); 598 | }, 599 | ); 600 | }); 601 | }; 602 | 603 | export const controlGetPosByHandle = ( 604 | hWnd: number, 605 | hCtrl: number, 606 | ): Promise => { 607 | if (!fn.hasOwnProperty("controlGetPosByHandle")) { 608 | fn["controlGetPosByHandle"] = lib.func("AU3_ControlGetPosByHandle", "int", [ 609 | "int", 610 | "int", 611 | "_Out_ LPRECT*", 612 | ]); 613 | } 614 | let result: any = {}; 615 | 616 | return new Promise((resolve, reject) => { 617 | fn["controlGetPosByHandle"].async( 618 | hWnd, 619 | hCtrl, 620 | result, 621 | (err: Error, _: any) => { 622 | if (err) reject(err); 623 | else resolve(result); 624 | }, 625 | ); 626 | }); 627 | }; 628 | 629 | export const controlGetText = ( 630 | szTitle: string, 631 | szText: string = "", 632 | szControl: string, 633 | nBufSize: number = 512, 634 | ): Promise => { 635 | if (!fn.hasOwnProperty("controlGetText")) { 636 | fn["controlGetText"] = lib.func("AU3_ControlGetText", "void", [ 637 | "string16", 638 | "string16", 639 | "string16", 640 | "LPWSTR", 641 | "int", 642 | ]); 643 | } 644 | let result = Buffer.alloc(nBufSize * wchar.size); 645 | 646 | return new Promise((resolve, reject) => { 647 | fn["controlGetText"].async( 648 | szTitle, 649 | szText, 650 | szControl, 651 | result, 652 | nBufSize, 653 | (err: Error, _: any) => { 654 | if (err) reject(err); 655 | else resolve(getWString(result)); 656 | }, 657 | ); 658 | }); 659 | }; 660 | 661 | export const controlGetTextByHandle = ( 662 | hWnd: number, 663 | hCtrl: number, 664 | nBufSize: number = 512, 665 | ): Promise => { 666 | if (!fn.hasOwnProperty("controlGetTextByHandle")) { 667 | fn["controlGetTextByHandle"] = lib.func( 668 | "AU3_ControlGetTextByHandle", 669 | "void", 670 | ["int", "int", "LPWSTR", "int"], 671 | ); 672 | } 673 | let result = Buffer.alloc(nBufSize * wchar.size); 674 | 675 | return new Promise((resolve, reject) => { 676 | fn["controlGetTextByHandle"].async( 677 | hWnd, 678 | hCtrl, 679 | result, 680 | nBufSize, 681 | (err: Error, _: any) => { 682 | if (err) reject(err); 683 | else resolve(getWString(result)); 684 | }, 685 | ); 686 | }); 687 | }; 688 | 689 | export const controlHide = ( 690 | szTitle: string, 691 | szText: string = "", 692 | szControl: string, 693 | ): Promise => { 694 | if (!fn.hasOwnProperty("controlHide")) { 695 | fn["controlHide"] = lib.func("AU3_ControlHide", "int", [ 696 | "string16", 697 | "string16", 698 | "string16", 699 | ]); 700 | } 701 | 702 | return new Promise((resolve, reject) => { 703 | fn["controlHide"].async( 704 | szTitle, 705 | szText, 706 | szControl, 707 | (err: Error, res: any) => { 708 | if (err) reject(err); 709 | else resolve(res); 710 | }, 711 | ); 712 | }); 713 | }; 714 | 715 | export const controlHideByHandle = ( 716 | hWnd: number, 717 | hCtrl: number, 718 | ): Promise => { 719 | if (!fn.hasOwnProperty("controlHideByHandle")) { 720 | fn["controlHideByHandle"] = lib.func("AU3_ControlHideByHandle", "int", [ 721 | "int", 722 | "int", 723 | ]); 724 | } 725 | 726 | return new Promise((resolve, reject) => { 727 | fn["controlHideByHandle"].async(hWnd, hCtrl, (err: Error, res: any) => { 728 | if (err) reject(err); 729 | else resolve(res); 730 | }); 731 | }); 732 | }; 733 | 734 | export const controlMove = ( 735 | szTitle: string, 736 | szText: string = "", 737 | szControl: string, 738 | nX: number, 739 | nY: number, 740 | nWidth: number = -1, 741 | nHeight: number = -1, 742 | ): Promise => { 743 | if (!fn.hasOwnProperty("controlMove")) { 744 | fn["controlMove"] = lib.func("AU3_ControlMove", "int", [ 745 | "string16", 746 | "string16", 747 | "string16", 748 | "int", 749 | "int", 750 | "int", 751 | "int", 752 | ]); 753 | } 754 | 755 | return new Promise((resolve, reject) => { 756 | fn["controlMove"].async( 757 | szTitle, 758 | szText, 759 | szControl, 760 | nX, 761 | nY, 762 | nWidth, 763 | nHeight, 764 | (err: Error, res: any) => { 765 | if (err) reject(err); 766 | else resolve(res); 767 | }, 768 | ); 769 | }); 770 | }; 771 | 772 | export const controlMoveByHandle = ( 773 | hWnd: number, 774 | hCtrl: number, 775 | nX: number, 776 | nY: number, 777 | nWidth: number = -1, 778 | nHeight: number = -1, 779 | ): Promise => { 780 | if (!fn.hasOwnProperty("controlMoveByHandle")) { 781 | fn["controlMoveByHandle"] = lib.func("AU3_ControlMoveByHandle", "int", [ 782 | "int", 783 | "int", 784 | "int", 785 | "int", 786 | "int", 787 | "int", 788 | ]); 789 | } 790 | 791 | return new Promise((resolve, reject) => { 792 | fn["controlMoveByHandle"].async( 793 | hWnd, 794 | hCtrl, 795 | nX, 796 | nY, 797 | nWidth, 798 | nHeight, 799 | (err: Error, res: any) => { 800 | if (err) reject(err); 801 | else resolve(res); 802 | }, 803 | ); 804 | }); 805 | }; 806 | 807 | export const controlSend = ( 808 | szTitle: string, 809 | szText: string = "", 810 | szControl: string, 811 | szSendText: string, 812 | nMode: number = 0, 813 | ): Promise => { 814 | if (!fn.hasOwnProperty("controlSend")) { 815 | fn["controlSend"] = lib.func("AU3_ControlSend", "int", [ 816 | "string16", 817 | "string16", 818 | "string16", 819 | "string16", 820 | "int", 821 | ]); 822 | } 823 | 824 | return new Promise((resolve, reject) => { 825 | fn["controlSend"].async( 826 | szTitle, 827 | szText, 828 | szControl, 829 | szSendText, 830 | nMode, 831 | (err: Error, res: any) => { 832 | if (err) reject(err); 833 | else resolve(res); 834 | }, 835 | ); 836 | }); 837 | }; 838 | 839 | export const controlSendByHandle = ( 840 | hWnd: number, 841 | hCtrl: number, 842 | szSendText: string, 843 | nMode: number = 0, 844 | ): Promise => { 845 | if (!fn.hasOwnProperty("controlSendByHandle")) { 846 | fn["controlSendByHandle"] = lib.func("AU3_ControlSendByHandle", "int", [ 847 | "int", 848 | "int", 849 | "string16", 850 | "int", 851 | ]); 852 | } 853 | 854 | return new Promise((resolve, reject) => { 855 | fn["controlSendByHandle"].async( 856 | hWnd, 857 | hCtrl, 858 | szSendText, 859 | nMode, 860 | (err: Error, res: any) => { 861 | if (err) reject(err); 862 | else resolve(res); 863 | }, 864 | ); 865 | }); 866 | }; 867 | 868 | export const controlSetText = ( 869 | szTitle: string, 870 | szText: string = "", 871 | szControl: string, 872 | szControlText: string, 873 | ): Promise => { 874 | if (!fn.hasOwnProperty("controlSetText")) { 875 | fn["controlSetText"] = lib.func("AU3_ControlSetText", "int", [ 876 | "string16", 877 | "string16", 878 | "string16", 879 | "string16", 880 | ]); 881 | } 882 | 883 | return new Promise((resolve, reject) => { 884 | fn["controlSetText"].async( 885 | szTitle, 886 | szText, 887 | szControl, 888 | szControlText, 889 | (err: Error, res: any) => { 890 | if (err) reject(err); 891 | else resolve(res); 892 | }, 893 | ); 894 | }); 895 | }; 896 | 897 | export const controlSetTextByHandle = ( 898 | hWnd: number, 899 | hCtrl: number, 900 | szControlText: string, 901 | ): Promise => { 902 | if (!fn.hasOwnProperty("controlSetTextByHandle")) { 903 | fn["controlSetTextByHandle"] = lib.func( 904 | "AU3_ControlSetTextByHandle", 905 | "int", 906 | ["int", "int", "string16"], 907 | ); 908 | } 909 | 910 | return new Promise((resolve, reject) => { 911 | fn["controlSetTextByHandle"].async( 912 | hWnd, 913 | hCtrl, 914 | szControlText, 915 | (err: Error, res: any) => { 916 | if (err) reject(err); 917 | else resolve(res); 918 | }, 919 | ); 920 | }); 921 | }; 922 | 923 | export const controlShow = ( 924 | szTitle: string, 925 | szText: string = "", 926 | szControl: string, 927 | ): Promise => { 928 | if (!fn.hasOwnProperty("controlShow")) { 929 | fn["controlShow"] = lib.func("AU3_ControlShow", "int", [ 930 | "string16", 931 | "string16", 932 | "string16", 933 | ]); 934 | } 935 | 936 | return new Promise((resolve, reject) => { 937 | fn["controlShow"].async( 938 | szTitle, 939 | szText, 940 | szControl, 941 | (err: Error, res: any) => { 942 | if (err) reject(err); 943 | else resolve(res); 944 | }, 945 | ); 946 | }); 947 | }; 948 | 949 | export const controlShowByHandle = ( 950 | hWnd: number, 951 | hCtrl: number, 952 | ): Promise => { 953 | if (!fn.hasOwnProperty("controlShowByHandle")) { 954 | fn["controlShowByHandle"] = lib.func("AU3_ControlShowByHandle", "int", [ 955 | "int", 956 | "int", 957 | ]); 958 | } 959 | 960 | return new Promise((resolve, reject) => { 961 | fn["controlShowByHandle"].async(hWnd, hCtrl, (err: Error, res: any) => { 962 | if (err) reject(err); 963 | else resolve(res); 964 | }); 965 | }); 966 | }; 967 | 968 | export const controlTreeView = ( 969 | szTitle: string, 970 | szText: string = "", 971 | szControl: string, 972 | szCommand: string, 973 | szExtra1: string = "", 974 | szExtra2: string = "", 975 | nBufSize: number = 256, 976 | ): Promise => { 977 | if (!fn.hasOwnProperty("controlTreeView")) { 978 | fn["controlTreeView"] = lib.func("AU3_ControlTreeView", "void", [ 979 | "string16", 980 | "string16", 981 | "string16", 982 | "string16", 983 | "string16", 984 | "string16", 985 | "LPWSTR", 986 | "int", 987 | ]); 988 | } 989 | let result = Buffer.alloc(nBufSize * wchar.size); 990 | 991 | return new Promise((resolve, reject) => { 992 | fn["controlTreeView"].async( 993 | szTitle, 994 | szText, 995 | szControl, 996 | szCommand, 997 | szExtra1, 998 | szExtra2, 999 | result, 1000 | nBufSize, 1001 | (err: Error, _: any) => { 1002 | if (err) reject(err); 1003 | else resolve(getWString(result)); 1004 | }, 1005 | ); 1006 | }); 1007 | }; 1008 | 1009 | export const controlTreeViewByHandle = ( 1010 | hWnd: number, 1011 | hCtrl: number, 1012 | szCommand: string, 1013 | szExtra1: string = "", 1014 | szExtra2: string = "", 1015 | nBufSize: number = 256, 1016 | ): Promise => { 1017 | if (!fn.hasOwnProperty("controlTreeViewByHandle")) { 1018 | fn["controlTreeViewByHandle"] = lib.func( 1019 | "AU3_ControlTreeViewByHandle", 1020 | "void", 1021 | ["int", "int", "string16", "string16", "string16", "LPWSTR", "int"], 1022 | ); 1023 | } 1024 | let result = Buffer.alloc(nBufSize * wchar.size); 1025 | 1026 | return new Promise((resolve, reject) => { 1027 | fn["controlTreeViewByHandle"].async( 1028 | hWnd, 1029 | hCtrl, 1030 | szCommand, 1031 | szExtra1, 1032 | szExtra2, 1033 | result, 1034 | nBufSize, 1035 | (err: Error, _: any) => { 1036 | if (err) reject(err); 1037 | else resolve(getWString(result)); 1038 | }, 1039 | ); 1040 | }); 1041 | }; 1042 | 1043 | export const driveMapAdd = ( 1044 | szDevice: string, 1045 | szShare: string, 1046 | nFlags: number, 1047 | szUser: string = "", 1048 | szPwd: string = "", 1049 | nBufSize: number = 256, 1050 | ): Promise => { 1051 | if (!fn.hasOwnProperty("driveMapAdd")) { 1052 | fn["driveMapAdd"] = lib.func("AU3_DriveMapAdd", "void", [ 1053 | "string16", 1054 | "string16", 1055 | "int", 1056 | "string16", 1057 | "string16", 1058 | "LPWSTR", 1059 | "int", 1060 | ]); 1061 | } 1062 | let result = Buffer.alloc(nBufSize * wchar.size); 1063 | 1064 | return new Promise((resolve, reject) => { 1065 | fn["driveMapAdd"].async( 1066 | szDevice, 1067 | szShare, 1068 | nFlags, 1069 | szUser, 1070 | szPwd, 1071 | result, 1072 | nBufSize, 1073 | (err: Error, _: any) => { 1074 | if (err) reject(err); 1075 | else resolve(getWString(result)); 1076 | }, 1077 | ); 1078 | }); 1079 | }; 1080 | 1081 | export const driveMapDel = (szDevice: string): Promise => { 1082 | if (!fn.hasOwnProperty("driveMapDel")) { 1083 | fn["driveMapDel"] = lib.func("AU3_DriveMapDel", "int", ["string16"]); 1084 | } 1085 | 1086 | return new Promise((resolve, reject) => { 1087 | fn["driveMapDel"].async(szDevice, (err: Error, res: any) => { 1088 | if (err) reject(err); 1089 | else resolve(res); 1090 | }); 1091 | }); 1092 | }; 1093 | 1094 | export const driveMapGet = ( 1095 | szDevice: string, 1096 | nBufSize: number = 256, 1097 | ): Promise => { 1098 | if (!fn.hasOwnProperty("driveMapGet")) { 1099 | fn["driveMapGet"] = lib.func("AU3_DriveMapGet", "void", [ 1100 | "string16", 1101 | "LPWSTR", 1102 | "int", 1103 | ]); 1104 | } 1105 | let result = Buffer.alloc(nBufSize * wchar.size); 1106 | 1107 | return new Promise((resolve, reject) => { 1108 | fn["driveMapGet"].async( 1109 | szDevice, 1110 | result, 1111 | nBufSize, 1112 | (err: Error, _: any) => { 1113 | if (err) reject(err); 1114 | else resolve(getWString(result)); 1115 | }, 1116 | ); 1117 | }); 1118 | }; 1119 | 1120 | export const isAdmin = (): Promise => { 1121 | if (!fn.hasOwnProperty("isAdmin")) { 1122 | fn["isAdmin"] = lib.func("AU3_IsAdmin", "int", []); 1123 | } 1124 | 1125 | return new Promise((resolve, reject) => { 1126 | fn["isAdmin"].async((err: Error, res: any) => { 1127 | if (err) reject(err); 1128 | else resolve(res); 1129 | }); 1130 | }); 1131 | }; 1132 | 1133 | export const mouseClick = ( 1134 | szButton: string = "LEFT", 1135 | nX: number = -2147483647, 1136 | nY: number = -2147483647, 1137 | nClicks: number = 1, 1138 | nSpeed: number = -1, 1139 | ): Promise => { 1140 | if (!fn.hasOwnProperty("mouseClick")) { 1141 | fn["mouseClick"] = lib.func("AU3_MouseClick", "int", [ 1142 | "string16", 1143 | "int", 1144 | "int", 1145 | "int", 1146 | "int", 1147 | ]); 1148 | } 1149 | 1150 | return new Promise((resolve, reject) => { 1151 | fn["mouseClick"].async( 1152 | szButton, 1153 | nX, 1154 | nY, 1155 | nClicks, 1156 | nSpeed, 1157 | (err: Error, res: any) => { 1158 | if (err) reject(err); 1159 | else resolve(res); 1160 | }, 1161 | ); 1162 | }); 1163 | }; 1164 | 1165 | export const mouseClickDrag = ( 1166 | szButton: string, 1167 | nX1: number, 1168 | nY1: number, 1169 | nX2: number, 1170 | nY2: number, 1171 | nSpeed: number = -1, 1172 | ): Promise => { 1173 | if (!fn.hasOwnProperty("mouseClickDrag")) { 1174 | fn["mouseClickDrag"] = lib.func("AU3_MouseClickDrag", "int", [ 1175 | "string16", 1176 | "int", 1177 | "int", 1178 | "int", 1179 | "int", 1180 | "int", 1181 | ]); 1182 | } 1183 | 1184 | return new Promise((resolve, reject) => { 1185 | fn["mouseClickDrag"].async( 1186 | szButton, 1187 | nX1, 1188 | nY1, 1189 | nX2, 1190 | nY2, 1191 | nSpeed, 1192 | (err: Error, res: any) => { 1193 | if (err) reject(err); 1194 | else resolve(res); 1195 | }, 1196 | ); 1197 | }); 1198 | }; 1199 | 1200 | export const mouseDown = (szButton: string = "LEFT"): Promise => { 1201 | if (!fn.hasOwnProperty("mouseDown")) { 1202 | fn["mouseDown"] = lib.func("AU3_MouseDown", "void", ["string16"]); 1203 | } 1204 | 1205 | return new Promise((resolve, reject) => { 1206 | fn["mouseDown"].async(szButton, (err: Error, res: any) => { 1207 | if (err) reject(err); 1208 | else resolve(res); 1209 | }); 1210 | }); 1211 | }; 1212 | 1213 | export const mouseGetCursor = (): Promise => { 1214 | if (!fn.hasOwnProperty("mouseGetCursor")) { 1215 | fn["mouseGetCursor"] = lib.func("AU3_MouseGetCursor", "int", []); 1216 | } 1217 | 1218 | return new Promise((resolve, reject) => { 1219 | fn["mouseGetCursor"].async((err: Error, res: any) => { 1220 | if (err) reject(err); 1221 | else resolve(res); 1222 | }); 1223 | }); 1224 | }; 1225 | 1226 | export const mouseGetPos = (): Promise => { 1227 | if (!fn.hasOwnProperty("mouseGetPos")) { 1228 | fn["mouseGetPos"] = lib.func("AU3_MouseGetPos", "void", ["_Out_ LPPOINT*"]); 1229 | } 1230 | let result: any = {}; 1231 | 1232 | return new Promise((resolve, reject) => { 1233 | fn["mouseGetPos"].async(result, (err: Error, _: any) => { 1234 | if (err) reject(err); 1235 | else resolve(result); 1236 | }); 1237 | }); 1238 | }; 1239 | 1240 | export const mouseMove = ( 1241 | nX: number, 1242 | nY: number, 1243 | nSpeed: number = -1, 1244 | ): Promise => { 1245 | if (!fn.hasOwnProperty("mouseMove")) { 1246 | fn["mouseMove"] = lib.func("AU3_MouseMove", "int", ["int", "int", "int"]); 1247 | } 1248 | 1249 | return new Promise((resolve, reject) => { 1250 | fn["mouseMove"].async(nX, nY, nSpeed, (err: Error, res: any) => { 1251 | if (err) reject(err); 1252 | else resolve(res); 1253 | }); 1254 | }); 1255 | }; 1256 | 1257 | export const mouseUp = (szButton: string = "LEFT"): Promise => { 1258 | if (!fn.hasOwnProperty("mouseUp")) { 1259 | fn["mouseUp"] = lib.func("AU3_MouseUp", "void", ["string16"]); 1260 | } 1261 | 1262 | return new Promise((resolve, reject) => { 1263 | fn["mouseUp"].async(szButton, (err: Error, res: any) => { 1264 | if (err) reject(err); 1265 | else resolve(res); 1266 | }); 1267 | }); 1268 | }; 1269 | 1270 | export const mouseWheel = ( 1271 | szDirection: string, 1272 | nClicks: number, 1273 | ): Promise => { 1274 | if (!fn.hasOwnProperty("mouseWheel")) { 1275 | fn["mouseWheel"] = lib.func("AU3_MouseWheel", "void", ["string16", "int"]); 1276 | } 1277 | 1278 | return new Promise((resolve, reject) => { 1279 | fn["mouseWheel"].async(szDirection, nClicks, (err: Error, res: any) => { 1280 | if (err) reject(err); 1281 | else resolve(res); 1282 | }); 1283 | }); 1284 | }; 1285 | 1286 | export const opt = (szOption: string, nValue: number): Promise => { 1287 | if (!fn.hasOwnProperty("opt")) { 1288 | fn["opt"] = lib.func("AU3_Opt", "int", ["string16", "int"]); 1289 | } 1290 | 1291 | return new Promise((resolve, reject) => { 1292 | fn["opt"].async(szOption, nValue, (err: Error, res: any) => { 1293 | if (err) reject(err); 1294 | else resolve(res); 1295 | }); 1296 | }); 1297 | }; 1298 | 1299 | export const pixelChecksum = ( 1300 | lpRect: Rect, 1301 | nStep: number = 1, 1302 | ): Promise => { 1303 | if (!fn.hasOwnProperty("pixelChecksum")) { 1304 | fn["pixelChecksum"] = lib.func("AU3_PixelChecksum", "uint", [ 1305 | "LPRECT", 1306 | "int", 1307 | ]); 1308 | } 1309 | 1310 | return new Promise((resolve, reject) => { 1311 | fn["pixelChecksum"].async(lpRect, nStep, (err: Error, res: any) => { 1312 | if (err) reject(err); 1313 | else resolve(res); 1314 | }); 1315 | }); 1316 | }; 1317 | 1318 | export const pixelGetColor = (nX: number, nY: number): Promise => { 1319 | if (!fn.hasOwnProperty("pixelGetColor")) { 1320 | fn["pixelGetColor"] = lib.func("AU3_PixelGetColor", "int", ["int", "int"]); 1321 | } 1322 | 1323 | return new Promise((resolve, reject) => { 1324 | fn["pixelGetColor"].async(nX, nY, (err: Error, res: any) => { 1325 | if (err) reject(err); 1326 | else resolve(res); 1327 | }); 1328 | }); 1329 | }; 1330 | 1331 | export const pixelSearch = ( 1332 | lpRect: Rect, 1333 | nCol: number, 1334 | nVar: number = 0, 1335 | nStep: number = 1, 1336 | ): Promise => { 1337 | if (!fn.hasOwnProperty("pixelSearch")) { 1338 | fn["pixelSearch"] = lib.func("AU3_PixelSearch", "void", [ 1339 | "LPRECT", 1340 | "int", 1341 | "int", 1342 | "int", 1343 | "_Out_ LPPOINT*", 1344 | ]); 1345 | } 1346 | let result: any = {}; 1347 | 1348 | return new Promise((resolve, reject) => { 1349 | fn["pixelSearch"].async( 1350 | lpRect, 1351 | nCol, 1352 | nVar, 1353 | nStep, 1354 | result, 1355 | (err: Error, _: any) => { 1356 | if (err) reject(err); 1357 | else resolve(result); 1358 | }, 1359 | ); 1360 | }); 1361 | }; 1362 | 1363 | export const processClose = (szProcess: string): Promise => { 1364 | if (!fn.hasOwnProperty("processClose")) { 1365 | fn["processClose"] = lib.func("AU3_ProcessClose", "int", ["string16"]); 1366 | } 1367 | 1368 | return new Promise((resolve, reject) => { 1369 | fn["processClose"].async(szProcess, (err: Error, res: any) => { 1370 | if (err) reject(err); 1371 | else resolve(res); 1372 | }); 1373 | }); 1374 | }; 1375 | 1376 | export const processExists = (szProcess: string): Promise => { 1377 | if (!fn.hasOwnProperty("processExists")) { 1378 | fn["processExists"] = lib.func("AU3_ProcessExists", "int", ["string16"]); 1379 | } 1380 | 1381 | return new Promise((resolve, reject) => { 1382 | fn["processExists"].async(szProcess, (err: Error, res: any) => { 1383 | if (err) reject(err); 1384 | else resolve(res); 1385 | }); 1386 | }); 1387 | }; 1388 | 1389 | export const processSetPriority = ( 1390 | szProcess: string, 1391 | nPriority: number, 1392 | ): Promise => { 1393 | if (!fn.hasOwnProperty("processSetPriority")) { 1394 | fn["processSetPriority"] = lib.func("AU3_ProcessSetPriority", "int", [ 1395 | "string16", 1396 | "int", 1397 | ]); 1398 | } 1399 | 1400 | return new Promise((resolve, reject) => { 1401 | fn["processSetPriority"].async( 1402 | szProcess, 1403 | nPriority, 1404 | (err: Error, res: any) => { 1405 | if (err) reject(err); 1406 | else resolve(res); 1407 | }, 1408 | ); 1409 | }); 1410 | }; 1411 | 1412 | export const processWait = ( 1413 | szProcess: string, 1414 | nTimeout: number = 0, 1415 | ): Promise => { 1416 | if (!fn.hasOwnProperty("processWait")) { 1417 | fn["processWait"] = lib.func("AU3_ProcessWait", "int", ["string16", "int"]); 1418 | } 1419 | 1420 | return new Promise((resolve, reject) => { 1421 | fn["processWait"].async(szProcess, nTimeout, (err: Error, res: any) => { 1422 | if (err) reject(err); 1423 | else resolve(res); 1424 | }); 1425 | }); 1426 | }; 1427 | 1428 | export const processWaitClose = ( 1429 | szProcess: string, 1430 | nTimeout: number = 0, 1431 | ): Promise => { 1432 | if (!fn.hasOwnProperty("processWaitClose")) { 1433 | fn["processWaitClose"] = lib.func("AU3_ProcessWaitClose", "int", [ 1434 | "string16", 1435 | "int", 1436 | ]); 1437 | } 1438 | 1439 | return new Promise((resolve, reject) => { 1440 | fn["processWaitClose"].async( 1441 | szProcess, 1442 | nTimeout, 1443 | (err: Error, res: any) => { 1444 | if (err) reject(err); 1445 | else resolve(res); 1446 | }, 1447 | ); 1448 | }); 1449 | }; 1450 | 1451 | export const run = ( 1452 | szProgram: string, 1453 | szDir: string = "", 1454 | nShowFlag: number = 1, 1455 | ): Promise => { 1456 | if (!fn.hasOwnProperty("run")) { 1457 | fn["run"] = lib.func("AU3_Run", "int", ["string16", "string16", "int"]); 1458 | } 1459 | 1460 | return new Promise((resolve, reject) => { 1461 | fn["run"].async(szProgram, szDir, nShowFlag, (err: Error, res: any) => { 1462 | if (err) reject(err); 1463 | else resolve(res); 1464 | }); 1465 | }); 1466 | }; 1467 | 1468 | export const runWait = ( 1469 | szProgram: string, 1470 | szDir: string = "", 1471 | nShowFlag: number = 1, 1472 | ): Promise => { 1473 | if (!fn.hasOwnProperty("runWait")) { 1474 | fn["runWait"] = lib.func("AU3_RunWait", "int", [ 1475 | "string16", 1476 | "string16", 1477 | "int", 1478 | ]); 1479 | } 1480 | 1481 | return new Promise((resolve, reject) => { 1482 | fn["runWait"].async(szProgram, szDir, nShowFlag, (err: Error, res: any) => { 1483 | if (err) reject(err); 1484 | else resolve(res); 1485 | }); 1486 | }); 1487 | }; 1488 | 1489 | export const runAs = ( 1490 | szUser: string, 1491 | szDomain: string, 1492 | szPassword: string, 1493 | nLogonFlag: number, 1494 | szProgram: string, 1495 | szDir: string = "", 1496 | nShowFlag: number = 1, 1497 | ): Promise => { 1498 | if (!fn.hasOwnProperty("runAs")) { 1499 | fn["runAs"] = lib.func("AU3_RunAs", "int", [ 1500 | "string16", 1501 | "string16", 1502 | "string16", 1503 | "int", 1504 | "string16", 1505 | "string16", 1506 | "int", 1507 | ]); 1508 | } 1509 | 1510 | return new Promise((resolve, reject) => { 1511 | fn["runAs"].async( 1512 | szUser, 1513 | szDomain, 1514 | szPassword, 1515 | nLogonFlag, 1516 | szProgram, 1517 | szDir, 1518 | nShowFlag, 1519 | (err: Error, res: any) => { 1520 | if (err) reject(err); 1521 | else resolve(res); 1522 | }, 1523 | ); 1524 | }); 1525 | }; 1526 | 1527 | export const runAsWait = ( 1528 | szUser: string, 1529 | szDomain: string, 1530 | szPassword: string, 1531 | nLogonFlag: number, 1532 | szProgram: string, 1533 | szDir: string = "", 1534 | nShowFlag: number = 1, 1535 | ): Promise => { 1536 | if (!fn.hasOwnProperty("runAsWait")) { 1537 | fn["runAsWait"] = lib.func("AU3_RunAsWait", "int", [ 1538 | "string16", 1539 | "string16", 1540 | "string16", 1541 | "int", 1542 | "string16", 1543 | "string16", 1544 | "int", 1545 | ]); 1546 | } 1547 | 1548 | return new Promise((resolve, reject) => { 1549 | fn["runAsWait"].async( 1550 | szUser, 1551 | szDomain, 1552 | szPassword, 1553 | nLogonFlag, 1554 | szProgram, 1555 | szDir, 1556 | nShowFlag, 1557 | (err: Error, res: any) => { 1558 | if (err) reject(err); 1559 | else resolve(res); 1560 | }, 1561 | ); 1562 | }); 1563 | }; 1564 | 1565 | export const send = (szSendText: string, nMode: number = 0): Promise => { 1566 | if (!fn.hasOwnProperty("send")) { 1567 | fn["send"] = lib.func("AU3_Send", "void", ["string16", "int"]); 1568 | } 1569 | 1570 | return new Promise((resolve, reject) => { 1571 | fn["send"].async(szSendText, nMode, (err: Error, res: any) => { 1572 | if (err) reject(err); 1573 | else resolve(res); 1574 | }); 1575 | }); 1576 | }; 1577 | 1578 | export const shutdown = (nFlags: number): Promise => { 1579 | if (!fn.hasOwnProperty("shutdown")) { 1580 | fn["shutdown"] = lib.func("AU3_Shutdown", "int", ["int"]); 1581 | } 1582 | 1583 | return new Promise((resolve, reject) => { 1584 | fn["shutdown"].async(nFlags, (err: Error, res: any) => { 1585 | if (err) reject(err); 1586 | else resolve(res); 1587 | }); 1588 | }); 1589 | }; 1590 | 1591 | export const sleep = (nMilliseconds: number): Promise => { 1592 | if (!fn.hasOwnProperty("sleep")) { 1593 | fn["sleep"] = lib.func("AU3_Sleep", "void", ["int"]); 1594 | } 1595 | 1596 | return new Promise((resolve, reject) => { 1597 | fn["sleep"].async(nMilliseconds, (err: Error, res: any) => { 1598 | if (err) reject(err); 1599 | else resolve(res); 1600 | }); 1601 | }); 1602 | }; 1603 | 1604 | export const statusbarGetText = ( 1605 | szTitle: string, 1606 | szText: string = "", 1607 | nPart: number = 1, 1608 | nBufSize: number = 256, 1609 | ): Promise => { 1610 | if (!fn.hasOwnProperty("statusbarGetText")) { 1611 | fn["statusbarGetText"] = lib.func("AU3_StatusbarGetText", "int", [ 1612 | "string16", 1613 | "string16", 1614 | "int", 1615 | "LPWSTR", 1616 | "int", 1617 | ]); 1618 | } 1619 | let result = Buffer.alloc(nBufSize * wchar.size); 1620 | 1621 | return new Promise((resolve, reject) => { 1622 | fn["statusbarGetText"].async( 1623 | szTitle, 1624 | szText, 1625 | nPart, 1626 | result, 1627 | nBufSize, 1628 | (err: Error, _: any) => { 1629 | if (err) reject(err); 1630 | else resolve(getWString(result)); 1631 | }, 1632 | ); 1633 | }); 1634 | }; 1635 | 1636 | export const statusbarGetTextByHandle = ( 1637 | hWnd: number, 1638 | nPart: number = 1, 1639 | nBufSize: number = 256, 1640 | ): Promise => { 1641 | if (!fn.hasOwnProperty("statusbarGetTextByHandle")) { 1642 | fn["statusbarGetTextByHandle"] = lib.func( 1643 | "AU3_StatusbarGetTextByHandle", 1644 | "int", 1645 | ["int", "int", "LPWSTR", "int"], 1646 | ); 1647 | } 1648 | let result = Buffer.alloc(nBufSize * wchar.size); 1649 | 1650 | return new Promise((resolve, reject) => { 1651 | fn["statusbarGetTextByHandle"].async( 1652 | hWnd, 1653 | nPart, 1654 | result, 1655 | nBufSize, 1656 | (err: Error, _: any) => { 1657 | if (err) reject(err); 1658 | else resolve(getWString(result)); 1659 | }, 1660 | ); 1661 | }); 1662 | }; 1663 | 1664 | export const toolTip = ( 1665 | szTip: string, 1666 | nX: number = -2147483647, 1667 | nY: number = -2147483647, 1668 | ): Promise => { 1669 | if (!fn.hasOwnProperty("toolTip")) { 1670 | fn["toolTip"] = lib.func("AU3_ToolTip", "void", ["string16", "int", "int"]); 1671 | } 1672 | 1673 | return new Promise((resolve, reject) => { 1674 | fn["toolTip"].async(szTip, nX, nY, (err: Error, res: any) => { 1675 | if (err) reject(err); 1676 | else resolve(res); 1677 | }); 1678 | }); 1679 | }; 1680 | 1681 | export const winActivate = ( 1682 | szTitle: string, 1683 | szText: string = "", 1684 | ): Promise => { 1685 | if (!fn.hasOwnProperty("winActivate")) { 1686 | fn["winActivate"] = lib.func("AU3_WinActivate", "int", [ 1687 | "string16", 1688 | "string16", 1689 | ]); 1690 | } 1691 | 1692 | return new Promise((resolve, reject) => { 1693 | fn["winActivate"].async(szTitle, szText, (err: Error, res: any) => { 1694 | if (err) reject(err); 1695 | else resolve(res); 1696 | }); 1697 | }); 1698 | }; 1699 | 1700 | export const winActivateByHandle = (hWnd: number): Promise => { 1701 | if (!fn.hasOwnProperty("winActivateByHandle")) { 1702 | fn["winActivateByHandle"] = lib.func("AU3_WinActivateByHandle", "int", [ 1703 | "int", 1704 | ]); 1705 | } 1706 | 1707 | return new Promise((resolve, reject) => { 1708 | fn["winActivateByHandle"].async(hWnd, (err: Error, res: any) => { 1709 | if (err) reject(err); 1710 | else resolve(res); 1711 | }); 1712 | }); 1713 | }; 1714 | 1715 | export const winActive = (szTitle: string, szText: string): Promise => { 1716 | if (!fn.hasOwnProperty("winActive")) { 1717 | fn["winActive"] = lib.func("AU3_WinActive", "int", [ 1718 | "string16", 1719 | "string16", 1720 | ]); 1721 | } 1722 | 1723 | return new Promise((resolve, reject) => { 1724 | fn["winActive"].async(szTitle, szText, (err: Error, res: any) => { 1725 | if (err) reject(err); 1726 | else resolve(res); 1727 | }); 1728 | }); 1729 | }; 1730 | 1731 | export const winActiveByHandle = (hWnd: number): Promise => { 1732 | if (!fn.hasOwnProperty("winActiveByHandle")) { 1733 | fn["winActiveByHandle"] = lib.func("AU3_WinActiveByHandle", "int", ["int"]); 1734 | } 1735 | 1736 | return new Promise((resolve, reject) => { 1737 | fn["winActiveByHandle"].async(hWnd, (err: Error, res: any) => { 1738 | if (err) reject(err); 1739 | else resolve(res); 1740 | }); 1741 | }); 1742 | }; 1743 | 1744 | export const winClose = ( 1745 | szTitle: string, 1746 | szText: string = "", 1747 | ): Promise => { 1748 | if (!fn.hasOwnProperty("winClose")) { 1749 | fn["winClose"] = lib.func("AU3_WinClose", "int", ["string16", "string16"]); 1750 | } 1751 | 1752 | return new Promise((resolve, reject) => { 1753 | fn["winClose"].async(szTitle, szText, (err: Error, res: any) => { 1754 | if (err) reject(err); 1755 | else resolve(res); 1756 | }); 1757 | }); 1758 | }; 1759 | 1760 | export const winCloseByHandle = (hWnd: number): Promise => { 1761 | if (!fn.hasOwnProperty("winCloseByHandle")) { 1762 | fn["winCloseByHandle"] = lib.func("AU3_WinCloseByHandle", "int", ["int"]); 1763 | } 1764 | 1765 | return new Promise((resolve, reject) => { 1766 | fn["winCloseByHandle"].async(hWnd, (err: Error, res: any) => { 1767 | if (err) reject(err); 1768 | else resolve(res); 1769 | }); 1770 | }); 1771 | }; 1772 | 1773 | export const winExists = ( 1774 | szTitle: string, 1775 | szText: string = "", 1776 | ): Promise => { 1777 | if (!fn.hasOwnProperty("winExists")) { 1778 | fn["winExists"] = lib.func("AU3_WinExists", "int", [ 1779 | "string16", 1780 | "string16", 1781 | ]); 1782 | } 1783 | 1784 | return new Promise((resolve, reject) => { 1785 | fn["winExists"].async(szTitle, szText, (err: Error, res: any) => { 1786 | if (err) reject(err); 1787 | else resolve(res); 1788 | }); 1789 | }); 1790 | }; 1791 | 1792 | export const winExistsByHandle = (hWnd: number): Promise => { 1793 | if (!fn.hasOwnProperty("winExistsByHandle")) { 1794 | fn["winExistsByHandle"] = lib.func("AU3_WinExistsByHandle", "int", ["int"]); 1795 | } 1796 | 1797 | return new Promise((resolve, reject) => { 1798 | fn["winExistsByHandle"].async(hWnd, (err: Error, res: any) => { 1799 | if (err) reject(err); 1800 | else resolve(res); 1801 | }); 1802 | }); 1803 | }; 1804 | 1805 | export const winGetCaretPos = (): Promise => { 1806 | if (!fn.hasOwnProperty("winGetCaretPos")) { 1807 | fn["winGetCaretPos"] = lib.func("AU3_WinGetCaretPos", "int", [ 1808 | "_Out_ LPPOINT*", 1809 | ]); 1810 | } 1811 | let result: any = {}; 1812 | 1813 | return new Promise((resolve, reject) => { 1814 | fn["winGetCaretPos"].async(result, (err: Error, _: any) => { 1815 | if (err) reject(err); 1816 | else resolve(result); 1817 | }); 1818 | }); 1819 | }; 1820 | 1821 | export const winGetClassList = ( 1822 | szTitle: string, 1823 | szText: string = "", 1824 | nBufSize: number = 512, 1825 | ): Promise => { 1826 | if (!fn.hasOwnProperty("winGetClassList")) { 1827 | fn["winGetClassList"] = lib.func("AU3_WinGetClassList", "void", [ 1828 | "string16", 1829 | "string16", 1830 | "LPWSTR", 1831 | "int", 1832 | ]); 1833 | } 1834 | let result = Buffer.alloc(nBufSize * wchar.size); 1835 | 1836 | return new Promise((resolve, reject) => { 1837 | fn["winGetClassList"].async( 1838 | szTitle, 1839 | szText, 1840 | result, 1841 | nBufSize, 1842 | (err: Error, _: any) => { 1843 | if (err) reject(err); 1844 | else resolve(getWString(result)); 1845 | }, 1846 | ); 1847 | }); 1848 | }; 1849 | 1850 | export const winGetClassListByHandle = ( 1851 | hWnd: number, 1852 | nBufSize: number = 512, 1853 | ): Promise => { 1854 | if (!fn.hasOwnProperty("winGetClassListByHandle")) { 1855 | fn["winGetClassListByHandle"] = lib.func( 1856 | "AU3_WinGetClassListByHandle", 1857 | "void", 1858 | ["int", "LPWSTR", "int"], 1859 | ); 1860 | } 1861 | let result = Buffer.alloc(nBufSize * wchar.size); 1862 | 1863 | return new Promise((resolve, reject) => { 1864 | fn["winGetClassListByHandle"].async( 1865 | hWnd, 1866 | result, 1867 | nBufSize, 1868 | (err: Error, _: any) => { 1869 | if (err) reject(err); 1870 | else resolve(getWString(result)); 1871 | }, 1872 | ); 1873 | }); 1874 | }; 1875 | 1876 | export const winGetClientSize = ( 1877 | szTitle: string, 1878 | szText: string = "", 1879 | ): Promise => { 1880 | if (!fn.hasOwnProperty("winGetClientSize")) { 1881 | fn["winGetClientSize"] = lib.func("AU3_WinGetClientSize", "int", [ 1882 | "string16", 1883 | "string16", 1884 | "_Out_ LPRECT*", 1885 | ]); 1886 | } 1887 | let result: any = {}; 1888 | 1889 | return new Promise((resolve, reject) => { 1890 | fn["winGetClientSize"].async( 1891 | szTitle, 1892 | szText, 1893 | result, 1894 | (err: Error, _: any) => { 1895 | if (err) reject(err); 1896 | else resolve(result); 1897 | }, 1898 | ); 1899 | }); 1900 | }; 1901 | 1902 | export const winGetClientSizeByHandle = (hWnd: number): Promise => { 1903 | if (!fn.hasOwnProperty("winGetClientSizeByHandle")) { 1904 | fn["winGetClientSizeByHandle"] = lib.func( 1905 | "AU3_WinGetClientSizeByHandle", 1906 | "int", 1907 | ["int", "_Out_ LPRECT*"], 1908 | ); 1909 | } 1910 | let result: any = {}; 1911 | 1912 | return new Promise((resolve, reject) => { 1913 | fn["winGetClientSizeByHandle"].async(hWnd, result, (err: Error, _: any) => { 1914 | if (err) reject(err); 1915 | else resolve(result); 1916 | }); 1917 | }); 1918 | }; 1919 | 1920 | export const winGetHandle = ( 1921 | szTitle: string, 1922 | szText: string = "", 1923 | ): Promise => { 1924 | if (!fn.hasOwnProperty("winGetHandle")) { 1925 | fn["winGetHandle"] = lib.func("AU3_WinGetHandle", "int", [ 1926 | "string16", 1927 | "string16", 1928 | ]); 1929 | } 1930 | 1931 | return new Promise((resolve, reject) => { 1932 | fn["winGetHandle"].async(szTitle, szText, (err: Error, res: any) => { 1933 | if (err) reject(err); 1934 | else resolve(res); 1935 | }); 1936 | }); 1937 | }; 1938 | 1939 | export const winGetHandleAsText = ( 1940 | szTitle: string, 1941 | szText: string = "", 1942 | nBufSize: number = 256, 1943 | ): Promise => { 1944 | if (!fn.hasOwnProperty("winGetHandleAsText")) { 1945 | fn["winGetHandleAsText"] = lib.func("AU3_WinGetHandleAsText", "void", [ 1946 | "string16", 1947 | "string16", 1948 | "LPWSTR", 1949 | "int", 1950 | ]); 1951 | } 1952 | let result = Buffer.alloc(nBufSize * wchar.size); 1953 | 1954 | return new Promise((resolve, reject) => { 1955 | fn["winGetHandleAsText"].async( 1956 | szTitle, 1957 | szText, 1958 | result, 1959 | nBufSize, 1960 | (err: Error, _: any) => { 1961 | if (err) reject(err); 1962 | else resolve(getWString(result)); 1963 | }, 1964 | ); 1965 | }); 1966 | }; 1967 | 1968 | export const winGetPos = ( 1969 | szTitle: string, 1970 | szText: string = "", 1971 | ): Promise => { 1972 | if (!fn.hasOwnProperty("winGetPos")) { 1973 | fn["winGetPos"] = lib.func("AU3_WinGetPos", "int", [ 1974 | "string16", 1975 | "string16", 1976 | "_Out_ LPRECT*", 1977 | ]); 1978 | } 1979 | let result: any = {}; 1980 | 1981 | return new Promise((resolve, reject) => { 1982 | fn["winGetPos"].async(szTitle, szText, result, (err: Error, _: any) => { 1983 | if (err) reject(err); 1984 | else resolve(result); 1985 | }); 1986 | }); 1987 | }; 1988 | 1989 | export const winGetPosByHandle = (hWnd: number): Promise => { 1990 | if (!fn.hasOwnProperty("winGetPosByHandle")) { 1991 | fn["winGetPosByHandle"] = lib.func("AU3_WinGetPosByHandle", "int", [ 1992 | "int", 1993 | "_Out_ LPRECT*", 1994 | ]); 1995 | } 1996 | let result: any = {}; 1997 | 1998 | return new Promise((resolve, reject) => { 1999 | fn["winGetPosByHandle"].async(hWnd, result, (err: Error, _: any) => { 2000 | if (err) reject(err); 2001 | else resolve(result); 2002 | }); 2003 | }); 2004 | }; 2005 | 2006 | export const winGetProcess = ( 2007 | szTitle: string, 2008 | szText: string = "", 2009 | ): Promise => { 2010 | if (!fn.hasOwnProperty("winGetProcess")) { 2011 | fn["winGetProcess"] = lib.func("AU3_WinGetProcess", "uint32", [ 2012 | "string16", 2013 | "string16", 2014 | ]); 2015 | } 2016 | 2017 | return new Promise((resolve, reject) => { 2018 | fn["winGetProcess"].async(szTitle, szText, (err: Error, res: any) => { 2019 | if (err) reject(err); 2020 | else resolve(res); 2021 | }); 2022 | }); 2023 | }; 2024 | 2025 | export const winGetProcessByHandle = (hWnd: number): Promise => { 2026 | if (!fn.hasOwnProperty("winGetProcessByHandle")) { 2027 | fn["winGetProcessByHandle"] = lib.func( 2028 | "AU3_WinGetProcessByHandle", 2029 | "uint32", 2030 | ["int"], 2031 | ); 2032 | } 2033 | 2034 | return new Promise((resolve, reject) => { 2035 | fn["winGetProcessByHandle"].async(hWnd, (err: Error, res: any) => { 2036 | if (err) reject(err); 2037 | else resolve(res); 2038 | }); 2039 | }); 2040 | }; 2041 | 2042 | export const winGetState = ( 2043 | szTitle: string, 2044 | szText: string = "", 2045 | ): Promise => { 2046 | if (!fn.hasOwnProperty("winGetState")) { 2047 | fn["winGetState"] = lib.func("AU3_WinGetState", "int", [ 2048 | "string16", 2049 | "string16", 2050 | ]); 2051 | } 2052 | 2053 | return new Promise((resolve, reject) => { 2054 | fn["winGetState"].async(szTitle, szText, (err: Error, res: any) => { 2055 | if (err) reject(err); 2056 | else resolve(res); 2057 | }); 2058 | }); 2059 | }; 2060 | 2061 | export const winGetStateByHandle = (hWnd: number): Promise => { 2062 | if (!fn.hasOwnProperty("winGetStateByHandle")) { 2063 | fn["winGetStateByHandle"] = lib.func("AU3_WinGetStateByHandle", "int", [ 2064 | "int", 2065 | ]); 2066 | } 2067 | 2068 | return new Promise((resolve, reject) => { 2069 | fn["winGetStateByHandle"].async(hWnd, (err: Error, res: any) => { 2070 | if (err) reject(err); 2071 | else resolve(res); 2072 | }); 2073 | }); 2074 | }; 2075 | 2076 | export const winGetText = ( 2077 | szTitle: string, 2078 | szText: string = "", 2079 | nBufSize: number = 512, 2080 | ): Promise => { 2081 | if (!fn.hasOwnProperty("winGetText")) { 2082 | fn["winGetText"] = lib.func("AU3_WinGetText", "void", [ 2083 | "string16", 2084 | "string16", 2085 | "LPWSTR", 2086 | "int", 2087 | ]); 2088 | } 2089 | let result = Buffer.alloc(nBufSize * wchar.size); 2090 | 2091 | return new Promise((resolve, reject) => { 2092 | fn["winGetText"].async( 2093 | szTitle, 2094 | szText, 2095 | result, 2096 | nBufSize, 2097 | (err: Error, _: any) => { 2098 | if (err) reject(err); 2099 | else resolve(getWString(result)); 2100 | }, 2101 | ); 2102 | }); 2103 | }; 2104 | 2105 | export const winGetTextByHandle = ( 2106 | hWnd: number, 2107 | nBufSize: number = 512, 2108 | ): Promise => { 2109 | if (!fn.hasOwnProperty("winGetTextByHandle")) { 2110 | fn["winGetTextByHandle"] = lib.func("AU3_WinGetTextByHandle", "void", [ 2111 | "int", 2112 | "LPWSTR", 2113 | "int", 2114 | ]); 2115 | } 2116 | let result = Buffer.alloc(nBufSize * wchar.size); 2117 | 2118 | return new Promise((resolve, reject) => { 2119 | fn["winGetTextByHandle"].async( 2120 | hWnd, 2121 | result, 2122 | nBufSize, 2123 | (err: Error, _: any) => { 2124 | if (err) reject(err); 2125 | else resolve(getWString(result)); 2126 | }, 2127 | ); 2128 | }); 2129 | }; 2130 | 2131 | export const winGetTitle = ( 2132 | szTitle: string, 2133 | szText: string = "", 2134 | nBufSize: number = 512, 2135 | ): Promise => { 2136 | if (!fn.hasOwnProperty("winGetTitle")) { 2137 | fn["winGetTitle"] = lib.func("AU3_WinGetTitle", "void", [ 2138 | "string16", 2139 | "string16", 2140 | "LPWSTR", 2141 | "int", 2142 | ]); 2143 | } 2144 | let result = Buffer.alloc(nBufSize * wchar.size); 2145 | 2146 | return new Promise((resolve, reject) => { 2147 | fn["winGetTitle"].async( 2148 | szTitle, 2149 | szText, 2150 | result, 2151 | nBufSize, 2152 | (err: Error, _: any) => { 2153 | if (err) reject(err); 2154 | else resolve(getWString(result)); 2155 | }, 2156 | ); 2157 | }); 2158 | }; 2159 | 2160 | export const winGetTitleByHandle = ( 2161 | hWnd: number, 2162 | nBufSize: number = 512, 2163 | ): Promise => { 2164 | if (!fn.hasOwnProperty("winGetTitleByHandle")) { 2165 | fn["winGetTitleByHandle"] = lib.func("AU3_WinGetTitleByHandle", "void", [ 2166 | "int", 2167 | "LPWSTR", 2168 | "int", 2169 | ]); 2170 | } 2171 | let result = Buffer.alloc(nBufSize * wchar.size); 2172 | 2173 | return new Promise((resolve, reject) => { 2174 | fn["winGetTitleByHandle"].async( 2175 | hWnd, 2176 | result, 2177 | nBufSize, 2178 | (err: Error, _: any) => { 2179 | if (err) reject(err); 2180 | else resolve(getWString(result)); 2181 | }, 2182 | ); 2183 | }); 2184 | }; 2185 | 2186 | export const winKill = ( 2187 | szTitle: string, 2188 | szText: string = "", 2189 | ): Promise => { 2190 | if (!fn.hasOwnProperty("winKill")) { 2191 | fn["winKill"] = lib.func("AU3_WinKill", "int", ["string16", "string16"]); 2192 | } 2193 | 2194 | return new Promise((resolve, reject) => { 2195 | fn["winKill"].async(szTitle, szText, (err: Error, res: any) => { 2196 | if (err) reject(err); 2197 | else resolve(res); 2198 | }); 2199 | }); 2200 | }; 2201 | 2202 | export const winKillByHandle = (hWnd: number): Promise => { 2203 | if (!fn.hasOwnProperty("winKillByHandle")) { 2204 | fn["winKillByHandle"] = lib.func("AU3_WinKillByHandle", "int", ["int"]); 2205 | } 2206 | 2207 | return new Promise((resolve, reject) => { 2208 | fn["winKillByHandle"].async(hWnd, (err: Error, res: any) => { 2209 | if (err) reject(err); 2210 | else resolve(res); 2211 | }); 2212 | }); 2213 | }; 2214 | 2215 | export const winMenuSelectItem = ( 2216 | szTitle: string, 2217 | szText: string = "", 2218 | szItem1: string, 2219 | szItem2: string = "", 2220 | szItem3: string = "", 2221 | szItem4: string = "", 2222 | szItem5: string = "", 2223 | szItem6: string = "", 2224 | szItem7: string = "", 2225 | szItem8: string = "", 2226 | ): Promise => { 2227 | if (!fn.hasOwnProperty("winMenuSelectItem")) { 2228 | fn["winMenuSelectItem"] = lib.func("AU3_WinMenuSelectItem", "int", [ 2229 | "string16", 2230 | "string16", 2231 | "string16", 2232 | "string16", 2233 | "string16", 2234 | "string16", 2235 | "string16", 2236 | "string16", 2237 | "string16", 2238 | "string16", 2239 | ]); 2240 | } 2241 | 2242 | return new Promise((resolve, reject) => { 2243 | fn["winMenuSelectItem"].async( 2244 | szTitle, 2245 | szText, 2246 | szItem1, 2247 | szItem2, 2248 | szItem3, 2249 | szItem4, 2250 | szItem5, 2251 | szItem6, 2252 | szItem7, 2253 | szItem8, 2254 | (err: Error, res: any) => { 2255 | if (err) reject(err); 2256 | else resolve(res); 2257 | }, 2258 | ); 2259 | }); 2260 | }; 2261 | 2262 | export const winMenuSelectItemByHandle = ( 2263 | hWnd: number, 2264 | szItem1: string, 2265 | szItem2: string = "", 2266 | szItem3: string = "", 2267 | szItem4: string = "", 2268 | szItem5: string = "", 2269 | szItem6: string = "", 2270 | szItem7: string = "", 2271 | szItem8: string = "", 2272 | ): Promise => { 2273 | if (!fn.hasOwnProperty("winMenuSelectItemByHandle")) { 2274 | fn["winMenuSelectItemByHandle"] = lib.func( 2275 | "AU3_WinMenuSelectItemByHandle", 2276 | "int", 2277 | [ 2278 | "int", 2279 | "string16", 2280 | "string16", 2281 | "string16", 2282 | "string16", 2283 | "string16", 2284 | "string16", 2285 | "string16", 2286 | "string16", 2287 | ], 2288 | ); 2289 | } 2290 | 2291 | return new Promise((resolve, reject) => { 2292 | fn["winMenuSelectItemByHandle"].async( 2293 | hWnd, 2294 | szItem1, 2295 | szItem2, 2296 | szItem3, 2297 | szItem4, 2298 | szItem5, 2299 | szItem6, 2300 | szItem7, 2301 | szItem8, 2302 | (err: Error, res: any) => { 2303 | if (err) reject(err); 2304 | else resolve(res); 2305 | }, 2306 | ); 2307 | }); 2308 | }; 2309 | 2310 | export const winMinimizeAll = (): Promise => { 2311 | if (!fn.hasOwnProperty("winMinimizeAll")) { 2312 | fn["winMinimizeAll"] = lib.func("AU3_WinMinimizeAll", "void", []); 2313 | } 2314 | 2315 | return new Promise((resolve, reject) => { 2316 | fn["winMinimizeAll"].async((err: Error, res: any) => { 2317 | if (err) reject(err); 2318 | else resolve(res); 2319 | }); 2320 | }); 2321 | }; 2322 | 2323 | export const winMinimizeAllUndo = (): Promise => { 2324 | if (!fn.hasOwnProperty("winMinimizeAllUndo")) { 2325 | fn["winMinimizeAllUndo"] = lib.func("AU3_WinMinimizeAllUndo", "void", []); 2326 | } 2327 | 2328 | return new Promise((resolve, reject) => { 2329 | fn["winMinimizeAllUndo"].async((err: Error, res: any) => { 2330 | if (err) reject(err); 2331 | else resolve(res); 2332 | }); 2333 | }); 2334 | }; 2335 | 2336 | export const winMove = ( 2337 | szTitle: string, 2338 | szText: string = "", 2339 | nX: number, 2340 | nY: number, 2341 | nWidth: number = -1, 2342 | nHeight: number = -1, 2343 | ): Promise => { 2344 | if (!fn.hasOwnProperty("winMove")) { 2345 | fn["winMove"] = lib.func("AU3_WinMove", "int", [ 2346 | "string16", 2347 | "string16", 2348 | "int", 2349 | "int", 2350 | "int", 2351 | "int", 2352 | ]); 2353 | } 2354 | 2355 | return new Promise((resolve, reject) => { 2356 | fn["winMove"].async( 2357 | szTitle, 2358 | szText, 2359 | nX, 2360 | nY, 2361 | nWidth, 2362 | nHeight, 2363 | (err: Error, res: any) => { 2364 | if (err) reject(err); 2365 | else resolve(res); 2366 | }, 2367 | ); 2368 | }); 2369 | }; 2370 | 2371 | export const winMoveByHandle = ( 2372 | hWnd: number, 2373 | nX: number, 2374 | nY: number, 2375 | nWidth: number = -1, 2376 | nHeight: number = -1, 2377 | ): Promise => { 2378 | if (!fn.hasOwnProperty("winMoveByHandle")) { 2379 | fn["winMoveByHandle"] = lib.func("AU3_WinMoveByHandle", "int", [ 2380 | "int", 2381 | "int", 2382 | "int", 2383 | "int", 2384 | "int", 2385 | ]); 2386 | } 2387 | 2388 | return new Promise((resolve, reject) => { 2389 | fn["winMoveByHandle"].async( 2390 | hWnd, 2391 | nX, 2392 | nY, 2393 | nWidth, 2394 | nHeight, 2395 | (err: Error, res: any) => { 2396 | if (err) reject(err); 2397 | else resolve(res); 2398 | }, 2399 | ); 2400 | }); 2401 | }; 2402 | 2403 | export const winSetOnTop = ( 2404 | szTitle: string, 2405 | szText: string = "", 2406 | nFlag: number, 2407 | ): Promise => { 2408 | if (!fn.hasOwnProperty("winSetOnTop")) { 2409 | fn["winSetOnTop"] = lib.func("AU3_WinSetOnTop", "int", [ 2410 | "string16", 2411 | "string16", 2412 | "int", 2413 | ]); 2414 | } 2415 | 2416 | return new Promise((resolve, reject) => { 2417 | fn["winSetOnTop"].async(szTitle, szText, nFlag, (err: Error, res: any) => { 2418 | if (err) reject(err); 2419 | else resolve(res); 2420 | }); 2421 | }); 2422 | }; 2423 | 2424 | export const winSetOnTopByHandle = ( 2425 | hWnd: number, 2426 | nFlag: number, 2427 | ): Promise => { 2428 | if (!fn.hasOwnProperty("winSetOnTopByHandle")) { 2429 | fn["winSetOnTopByHandle"] = lib.func("AU3_WinSetOnTopByHandle", "int", [ 2430 | "int", 2431 | "int", 2432 | ]); 2433 | } 2434 | 2435 | return new Promise((resolve, reject) => { 2436 | fn["winSetOnTopByHandle"].async(hWnd, nFlag, (err: Error, res: any) => { 2437 | if (err) reject(err); 2438 | else resolve(res); 2439 | }); 2440 | }); 2441 | }; 2442 | 2443 | export const winSetState = ( 2444 | szTitle: string, 2445 | szText: string = "", 2446 | nFlags: number, 2447 | ): Promise => { 2448 | if (!fn.hasOwnProperty("winSetState")) { 2449 | fn["winSetState"] = lib.func("AU3_WinSetState", "int", [ 2450 | "string16", 2451 | "string16", 2452 | "int", 2453 | ]); 2454 | } 2455 | 2456 | return new Promise((resolve, reject) => { 2457 | fn["winSetState"].async(szTitle, szText, nFlags, (err: Error, res: any) => { 2458 | if (err) reject(err); 2459 | else resolve(res); 2460 | }); 2461 | }); 2462 | }; 2463 | 2464 | export const winSetStateByHandle = ( 2465 | hWnd: number, 2466 | nFlags: number, 2467 | ): Promise => { 2468 | if (!fn.hasOwnProperty("winSetStateByHandle")) { 2469 | fn["winSetStateByHandle"] = lib.func("AU3_WinSetStateByHandle", "int", [ 2470 | "int", 2471 | "int", 2472 | ]); 2473 | } 2474 | 2475 | return new Promise((resolve, reject) => { 2476 | fn["winSetStateByHandle"].async(hWnd, nFlags, (err: Error, res: any) => { 2477 | if (err) reject(err); 2478 | else resolve(res); 2479 | }); 2480 | }); 2481 | }; 2482 | 2483 | export const winSetTitle = ( 2484 | szTitle: string, 2485 | szText: string = "", 2486 | szNewTitle: string, 2487 | ): Promise => { 2488 | if (!fn.hasOwnProperty("winSetTitle")) { 2489 | fn["winSetTitle"] = lib.func("AU3_WinSetTitle", "int", [ 2490 | "string16", 2491 | "string16", 2492 | "string16", 2493 | ]); 2494 | } 2495 | 2496 | return new Promise((resolve, reject) => { 2497 | fn["winSetTitle"].async( 2498 | szTitle, 2499 | szText, 2500 | szNewTitle, 2501 | (err: Error, res: any) => { 2502 | if (err) reject(err); 2503 | else resolve(res); 2504 | }, 2505 | ); 2506 | }); 2507 | }; 2508 | 2509 | export const winSetTitleByHandle = ( 2510 | hWnd: number, 2511 | szNewTitle: string, 2512 | ): Promise => { 2513 | if (!fn.hasOwnProperty("winSetTitleByHandle")) { 2514 | fn["winSetTitleByHandle"] = lib.func("AU3_WinSetTitleByHandle", "int", [ 2515 | "int", 2516 | "string16", 2517 | ]); 2518 | } 2519 | 2520 | return new Promise((resolve, reject) => { 2521 | fn["winSetTitleByHandle"].async( 2522 | hWnd, 2523 | szNewTitle, 2524 | (err: Error, res: any) => { 2525 | if (err) reject(err); 2526 | else resolve(res); 2527 | }, 2528 | ); 2529 | }); 2530 | }; 2531 | 2532 | export const winSetTrans = ( 2533 | szTitle: string, 2534 | szText: string = "", 2535 | nTrans: number, 2536 | ): Promise => { 2537 | if (!fn.hasOwnProperty("winSetTrans")) { 2538 | fn["winSetTrans"] = lib.func("AU3_WinSetTrans", "int", [ 2539 | "string16", 2540 | "string16", 2541 | "int", 2542 | ]); 2543 | } 2544 | 2545 | return new Promise((resolve, reject) => { 2546 | fn["winSetTrans"].async(szTitle, szText, nTrans, (err: Error, res: any) => { 2547 | if (err) reject(err); 2548 | else resolve(res); 2549 | }); 2550 | }); 2551 | }; 2552 | 2553 | export const winSetTransByHandle = ( 2554 | hWnd: number, 2555 | nTrans: number, 2556 | ): Promise => { 2557 | if (!fn.hasOwnProperty("winSetTransByHandle")) { 2558 | fn["winSetTransByHandle"] = lib.func("AU3_WinSetTransByHandle", "int", [ 2559 | "int", 2560 | "int", 2561 | ]); 2562 | } 2563 | 2564 | return new Promise((resolve, reject) => { 2565 | fn["winSetTransByHandle"].async(hWnd, nTrans, (err: Error, res: any) => { 2566 | if (err) reject(err); 2567 | else resolve(res); 2568 | }); 2569 | }); 2570 | }; 2571 | 2572 | export const winWait = ( 2573 | szTitle: string, 2574 | szText: string = "", 2575 | nTimeout: number = 0, 2576 | ): Promise => { 2577 | if (!fn.hasOwnProperty("winWait")) { 2578 | fn["winWait"] = lib.func("AU3_WinWait", "int", [ 2579 | "string16", 2580 | "string16", 2581 | "int", 2582 | ]); 2583 | } 2584 | 2585 | return new Promise((resolve, reject) => { 2586 | fn["winWait"].async(szTitle, szText, nTimeout, (err: Error, res: any) => { 2587 | if (err) reject(err); 2588 | else resolve(res); 2589 | }); 2590 | }); 2591 | }; 2592 | 2593 | export const winWaitByHandle = ( 2594 | hWnd: number, 2595 | nTimeout: number = 0, 2596 | ): Promise => { 2597 | if (!fn.hasOwnProperty("winWaitByHandle")) { 2598 | fn["winWaitByHandle"] = lib.func("AU3_WinWaitByHandle", "int", [ 2599 | "int", 2600 | "int", 2601 | ]); 2602 | } 2603 | 2604 | return new Promise((resolve, reject) => { 2605 | fn["winWaitByHandle"].async(hWnd, nTimeout, (err: Error, res: any) => { 2606 | if (err) reject(err); 2607 | else resolve(res); 2608 | }); 2609 | }); 2610 | }; 2611 | 2612 | export const winWaitActive = ( 2613 | szTitle: string, 2614 | szText: string = "", 2615 | nTimeout: number = 0, 2616 | ): Promise => { 2617 | if (!fn.hasOwnProperty("winWaitActive")) { 2618 | fn["winWaitActive"] = lib.func("AU3_WinWaitActive", "int", [ 2619 | "string16", 2620 | "string16", 2621 | "int", 2622 | ]); 2623 | } 2624 | 2625 | return new Promise((resolve, reject) => { 2626 | fn["winWaitActive"].async( 2627 | szTitle, 2628 | szText, 2629 | nTimeout, 2630 | (err: Error, res: any) => { 2631 | if (err) reject(err); 2632 | else resolve(res); 2633 | }, 2634 | ); 2635 | }); 2636 | }; 2637 | 2638 | export const winWaitActiveByHandle = ( 2639 | hWnd: number, 2640 | nTimeout: number = 0, 2641 | ): Promise => { 2642 | if (!fn.hasOwnProperty("winWaitActiveByHandle")) { 2643 | fn["winWaitActiveByHandle"] = lib.func("AU3_WinWaitActiveByHandle", "int", [ 2644 | "int", 2645 | "int", 2646 | ]); 2647 | } 2648 | 2649 | return new Promise((resolve, reject) => { 2650 | fn["winWaitActiveByHandle"].async( 2651 | hWnd, 2652 | nTimeout, 2653 | (err: Error, res: any) => { 2654 | if (err) reject(err); 2655 | else resolve(res); 2656 | }, 2657 | ); 2658 | }); 2659 | }; 2660 | 2661 | export const winWaitClose = ( 2662 | szTitle: string, 2663 | szText: string = "", 2664 | nTimeout: number = 0, 2665 | ): Promise => { 2666 | if (!fn.hasOwnProperty("winWaitClose")) { 2667 | fn["winWaitClose"] = lib.func("AU3_WinWaitClose", "int", [ 2668 | "string16", 2669 | "string16", 2670 | "int", 2671 | ]); 2672 | } 2673 | 2674 | return new Promise((resolve, reject) => { 2675 | fn["winWaitClose"].async( 2676 | szTitle, 2677 | szText, 2678 | nTimeout, 2679 | (err: Error, res: any) => { 2680 | if (err) reject(err); 2681 | else resolve(res); 2682 | }, 2683 | ); 2684 | }); 2685 | }; 2686 | 2687 | export const winWaitCloseByHandle = ( 2688 | hWnd: number, 2689 | nTimeout: number = 0, 2690 | ): Promise => { 2691 | if (!fn.hasOwnProperty("winWaitCloseByHandle")) { 2692 | fn["winWaitCloseByHandle"] = lib.func("AU3_WinWaitCloseByHandle", "int", [ 2693 | "int", 2694 | "int", 2695 | ]); 2696 | } 2697 | 2698 | return new Promise((resolve, reject) => { 2699 | fn["winWaitCloseByHandle"].async(hWnd, nTimeout, (err: Error, res: any) => { 2700 | if (err) reject(err); 2701 | else resolve(res); 2702 | }); 2703 | }); 2704 | }; 2705 | 2706 | export const winWaitNotActive = ( 2707 | szTitle: string, 2708 | szText: string = "", 2709 | nTimeout: number = 0, 2710 | ): Promise => { 2711 | if (!fn.hasOwnProperty("winWaitNotActive")) { 2712 | fn["winWaitNotActive"] = lib.func("AU3_WinWaitNotActive", "int", [ 2713 | "string16", 2714 | "string16", 2715 | "int", 2716 | ]); 2717 | } 2718 | 2719 | return new Promise((resolve, reject) => { 2720 | fn["winWaitNotActive"].async( 2721 | szTitle, 2722 | szText, 2723 | nTimeout, 2724 | (err: Error, res: any) => { 2725 | if (err) reject(err); 2726 | else resolve(res); 2727 | }, 2728 | ); 2729 | }); 2730 | }; 2731 | 2732 | export const winWaitNotActiveByHandle = ( 2733 | hWnd: number, 2734 | nTimeout: number = 0, 2735 | ): Promise => { 2736 | if (!fn.hasOwnProperty("winWaitNotActiveByHandle")) { 2737 | fn["winWaitNotActiveByHandle"] = lib.func( 2738 | "AU3_WinWaitNotActiveByHandle", 2739 | "int", 2740 | ["int", "int"], 2741 | ); 2742 | } 2743 | 2744 | return new Promise((resolve, reject) => { 2745 | fn["winWaitNotActiveByHandle"].async( 2746 | hWnd, 2747 | nTimeout, 2748 | (err: Error, res: any) => { 2749 | if (err) reject(err); 2750 | else resolve(res); 2751 | }, 2752 | ); 2753 | }); 2754 | }; 2755 | -------------------------------------------------------------------------------- /src/util.ts: -------------------------------------------------------------------------------- 1 | import * as os from "os"; 2 | import path from "node:path"; 3 | import wchar from "./wchar"; 4 | 5 | export const getDll = () => { 6 | const libDir = path.join(__dirname, "../dlls"); 7 | 8 | switch (os.arch()) { 9 | case "ia32": 10 | return path.join(libDir, "AutoItX3.dll"); 11 | case "x64": 12 | return path.join(libDir, "AutoItX3_x64.dll"); 13 | } 14 | 15 | return null; 16 | }; 17 | 18 | export const getWString = (buf: Buffer) => { 19 | for (let i = 0; i < buf.length; i += wchar.size) { 20 | if (buf[i] == 0 && buf[i + 1] == 0) return wchar.toString(buf.slice(0, i)); 21 | } 22 | return wchar.toString(buf); 23 | }; 24 | -------------------------------------------------------------------------------- /src/wchar.js: -------------------------------------------------------------------------------- 1 | /* 2 | This code is from ref-wchar by nathan 3 | 4 | License 5 | (The MIT License) 6 | 7 | Copyright (c) 2014 Nathan Rajlich 8 | 9 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 14 | */ 15 | 16 | /** 17 | * Module dependencies. 18 | */ 19 | 20 | var ref = require('ref-napi'); 21 | //var Iconv = require('iconv').Iconv; 22 | var iconv = require('iconv-lite'); 23 | 24 | /** 25 | * On Windows they're UTF-16 (2-bytes), 26 | * but on Unix platform they're UTF-32 (4-bytes). 27 | * 28 | * TODO: add a way to optionally enable `-fshort-wchar` for Unix (gcc option). 29 | */ 30 | 31 | var size; 32 | if ('win32' == process.platform) { 33 | size = 2; 34 | } else { 35 | size = 4; 36 | } 37 | 38 | var wchar_encoding = ('utf-' + (8*size) + ref.endianness).toLowerCase(); 39 | //var getter = new Iconv('UTF-' + (8 * size) + ref.endianness, 'UTF-8'); 40 | //var setter = new Iconv('UTF-8', 'UTF-' + (8 * size) + ref.endianness); 41 | 42 | 43 | /** 44 | * The `wchar_t` type. 45 | */ 46 | 47 | exports = module.exports = Object.create(ref.types['int' + (8 * size)]); 48 | exports.name = 'wchar_t'; 49 | exports.size = size; 50 | exports.indirection = 1; 51 | exports.get = function get (buf, offset) { 52 | if (offset > 0 || buf.length !== exports.size) { 53 | offset = offset | 0; 54 | buf = buf.slice(offset, offset + size); 55 | } 56 | return exports.toString(buf); 57 | }; 58 | exports.set = function set (buf, offset, val) { 59 | var _buf = val; // assume val is a Buffer by default 60 | if (typeof val === 'string') { 61 | //_buf = setter.convert(val[0]); 62 | _buf = iconv.encode(val[0], wchar_encoding); 63 | } else if (typeof val === 'number') { 64 | //_buf = setter.convert(String.fromCharCode(val)); 65 | _buf = iconv.encode(String.fromCharCode(val), wchar_encoding); 66 | } else if (!_buf) { 67 | throw new TypeError('muss pass a String, Number, or Buffer for `wchar_t`'); 68 | } 69 | return _buf.copy(buf, offset, 0, size); 70 | }; 71 | 72 | 73 | /** 74 | * The "wchar_t *" type. 75 | * 76 | * We use the "CString" type as a base since it's pretty close to what we 77 | * actually want. We just have to define custom "get" and "set" functions. 78 | */ 79 | 80 | exports.string = Object.create(ref.types.CString); 81 | exports.string.name = 'WCString'; 82 | exports.string.get = function get (buf, offset) { 83 | var _buf = buf.readPointer(offset); 84 | if (_buf.isNull()) { 85 | return null; 86 | } 87 | var stringBuf = _buf.reinterpretUntilZeros(exports.size); 88 | return exports.toString(stringBuf); 89 | }; 90 | exports.string.set = function set (buf, offset, val) { 91 | var _buf = val; // val is a Buffer? it better be \0 terminated... 92 | if ('string' == typeof val) { 93 | //_buf = setter.convert(val + '\0'); 94 | _buf = iconv.encode(val + '\0', wchar_encoding); 95 | } 96 | return buf.writePointer(_buf, offset); 97 | }; 98 | 99 | /** 100 | * Turns a `wchar_t *` Buffer instance into a JavaScript String instance. 101 | * 102 | * @param {Buffer} buffer - buffer instance to serialize 103 | * @public 104 | */ 105 | 106 | exports.toString = function toString (buffer) { 107 | //return getter.convert(buffer).toString('utf8'); 108 | return iconv.decode(buffer, wchar_encoding); 109 | }; 110 | -------------------------------------------------------------------------------- /tools/argumentNames.json: -------------------------------------------------------------------------------- 1 | { 2 | "AU3_AutoItSetOption": { 3 | "arg0": "szOption", 4 | "arg1": "nValue" 5 | }, 6 | "AU3_ClipGet": { 7 | "arg0": "szClip", 8 | "arg1": "nBufSize" 9 | }, 10 | "AU3_ClipPut": { 11 | "arg0": "szClip" 12 | }, 13 | "AU3_ControlClick": { 14 | "arg0": "szTitle", 15 | "arg1": "szText", 16 | "arg2": "szControl", 17 | "arg3": "szButton", 18 | "arg4": "nNumClicks", 19 | "arg5": "nX", 20 | "arg6": "nY" 21 | }, 22 | "AU3_ControlClickByHandle": { 23 | "arg0": "hWnd", 24 | "arg1": "hCtrl", 25 | "arg2": "szButton", 26 | "arg3": "nNumClicks", 27 | "arg4": "nX", 28 | "arg5": "nY" 29 | }, 30 | "AU3_ControlCommand": { 31 | "arg0": "szTitle", 32 | "arg1": "szText", 33 | "arg2": "szControl", 34 | "arg3": "szCommand", 35 | "arg4": "szExtra", 36 | "arg5": "szResult", 37 | "arg6": "nBufSize" 38 | }, 39 | "AU3_ControlCommandByHandle": { 40 | "arg0": "hWnd", 41 | "arg1": "hCtrl", 42 | "arg2": "szCommand", 43 | "arg3": "szExtra", 44 | "arg4": "szResult", 45 | "arg5": "nBufSize" 46 | }, 47 | "AU3_ControlListView": { 48 | "arg0": "szTitle", 49 | "arg1": "szText", 50 | "arg2": "szControl", 51 | "arg3": "szCommand", 52 | "arg4": "szExtra1", 53 | "arg5": "szExtra2", 54 | "arg6": "szResult", 55 | "arg7": "nBufSize" 56 | }, 57 | "AU3_ControlListViewByHandle": { 58 | "arg0": "hWnd", 59 | "arg1": "hCtrl", 60 | "arg2": "szCommand", 61 | "arg3": "szExtra1", 62 | "arg4": "szExtra2", 63 | "arg5": "szResult", 64 | "arg6": "nBufSize" 65 | }, 66 | "AU3_ControlDisable": { 67 | "arg0": "szTitle", 68 | "arg1": "szText", 69 | "arg2": "szControl" 70 | }, 71 | "AU3_ControlDisableByHandle": { 72 | "arg0": "hWnd", 73 | "arg1": "hCtrl" 74 | }, 75 | "AU3_ControlEnable": { 76 | "arg0": "szTitle", 77 | "arg1": "szText", 78 | "arg2": "szControl" 79 | }, 80 | "AU3_ControlEnableByHandle": { 81 | "arg0": "hWnd", 82 | "arg1": "hCtrl" 83 | }, 84 | "AU3_ControlFocus": { 85 | "arg0": "szTitle", 86 | "arg1": "szText", 87 | "arg2": "szControl" 88 | }, 89 | "AU3_ControlFocusByHandle": { 90 | "arg0": "hWnd", 91 | "arg1": "hCtrl" 92 | }, 93 | "AU3_ControlGetFocus": { 94 | "arg0": "szTitle", 95 | "arg1": "szText", 96 | "arg2": "szControlWithFocus", 97 | "arg3": "nBufSize" 98 | }, 99 | "AU3_ControlGetFocusByHandle": { 100 | "arg0": "hWnd", 101 | "arg1": "szControlWithFocus", 102 | "arg2": "nBufSize" 103 | }, 104 | "AU3_ControlGetHandle": { 105 | "arg0": "hWnd", 106 | "arg1": "szControl" 107 | }, 108 | "AU3_ControlGetHandleAsText": { 109 | "arg0": "szTitle", 110 | "arg1": "szText", 111 | "arg2": "szControl", 112 | "arg3": "szRetText", 113 | "arg4": "nBufSize" 114 | }, 115 | "AU3_ControlGetPos": { 116 | "arg0": "szTitle", 117 | "arg1": "szText", 118 | "arg2": "szControl", 119 | "arg3": "lpRect" 120 | }, 121 | "AU3_ControlGetPosByHandle": { 122 | "arg0": "hWnd", 123 | "arg1": "hCtrl", 124 | "arg2": "lpRect" 125 | }, 126 | "AU3_ControlGetText": { 127 | "arg0": "szTitle", 128 | "arg1": "szText", 129 | "arg2": "szControl", 130 | "arg3": "szControlText", 131 | "arg4": "nBufSize" 132 | }, 133 | "AU3_ControlGetTextByHandle": { 134 | "arg0": "hWnd", 135 | "arg1": "hCtrl", 136 | "arg2": "szControlText", 137 | "arg3": "nBufSize" 138 | }, 139 | "AU3_ControlHide": { 140 | "arg0": "szTitle", 141 | "arg1": "szText", 142 | "arg2": "szControl" 143 | }, 144 | "AU3_ControlHideByHandle": { 145 | "arg0": "hWnd", 146 | "arg1": "hCtrl" 147 | }, 148 | "AU3_ControlMove": { 149 | "arg0": "szTitle", 150 | "arg1": "szText", 151 | "arg2": "szControl", 152 | "arg3": "nX", 153 | "arg4": "nY", 154 | "arg5": "nWidth", 155 | "arg6": "nHeight" 156 | }, 157 | "AU3_ControlMoveByHandle": { 158 | "arg0": "hWnd", 159 | "arg1": "hCtrl", 160 | "arg2": "nX", 161 | "arg3": "nY", 162 | "arg4": "nWidth", 163 | "arg5": "nHeight" 164 | }, 165 | "AU3_ControlSend": { 166 | "arg0": "szTitle", 167 | "arg1": "szText", 168 | "arg2": "szControl", 169 | "arg3": "szSendText", 170 | "arg4": "nMode" 171 | }, 172 | "AU3_ControlSendByHandle": { 173 | "arg0": "hWnd", 174 | "arg1": "hCtrl", 175 | "arg2": "szSendText", 176 | "arg3": "nMode" 177 | }, 178 | "AU3_ControlSetText": { 179 | "arg0": "szTitle", 180 | "arg1": "szText", 181 | "arg2": "szControl", 182 | "arg3": "szControlText" 183 | }, 184 | "AU3_ControlSetTextByHandle": { 185 | "arg0": "hWnd", 186 | "arg1": "hCtrl", 187 | "arg2": "szControlText" 188 | }, 189 | "AU3_ControlShow": { 190 | "arg0": "szTitle", 191 | "arg1": "szText", 192 | "arg2": "szControl" 193 | }, 194 | "AU3_ControlShowByHandle": { 195 | "arg0": "hWnd", 196 | "arg1": "hCtrl" 197 | }, 198 | "AU3_ControlTreeView": { 199 | "arg0": "szTitle", 200 | "arg1": "szText", 201 | "arg2": "szControl", 202 | "arg3": "szCommand", 203 | "arg4": "szExtra1", 204 | "arg5": "szExtra2", 205 | "arg6": "szResult", 206 | "arg7": "nBufSize" 207 | }, 208 | "AU3_ControlTreeViewByHandle": { 209 | "arg0": "hWnd", 210 | "arg1": "hCtrl", 211 | "arg2": "szCommand", 212 | "arg3": "szExtra1", 213 | "arg4": "szExtra2", 214 | "arg5": "szResult", 215 | "arg6": "nBufSize" 216 | }, 217 | "AU3_DriveMapAdd": { 218 | "arg0": "szDevice", 219 | "arg1": "szShare", 220 | "arg2": "nFlags", 221 | "arg3": "szUser", 222 | "arg4": "szPwd", 223 | "arg5": "szResult", 224 | "arg6": "nBufSize" 225 | }, 226 | "AU3_DriveMapDel": { 227 | "arg0": "szDevice" 228 | }, 229 | "AU3_DriveMapGet": { 230 | "arg0": "szDevice", 231 | "arg1": "szMapping", 232 | "arg2": "nBufSize" 233 | }, 234 | "AU3_MouseClick": { 235 | "arg0": "szButton", 236 | "arg1": "nX", 237 | "arg2": "nY", 238 | "arg3": "nClicks", 239 | "arg4": "nSpeed" 240 | }, 241 | "AU3_MouseClickDrag": { 242 | "arg0": "szButton", 243 | "arg1": "nX1", 244 | "arg2": "nY1", 245 | "arg3": "nX2", 246 | "arg4": "nY2", 247 | "arg5": "nSpeed" 248 | }, 249 | "AU3_MouseDown": { 250 | "arg0": "szButton" 251 | }, 252 | "AU3_MouseGetPos": { 253 | "arg0": "lpPoint" 254 | }, 255 | "AU3_MouseMove": { 256 | "arg0": "nX", 257 | "arg1": "nY", 258 | "arg2": "nSpeed" 259 | }, 260 | "AU3_MouseUp": { 261 | "arg0": "szButton" 262 | }, 263 | "AU3_MouseWheel": { 264 | "arg0": "szDirection", 265 | "arg1": "nClicks" 266 | }, 267 | "AU3_Opt": { 268 | "arg0": "szOption", 269 | "arg1": "nValue" 270 | }, 271 | "AU3_PixelChecksum": { 272 | "arg0": "lpRect", 273 | "arg1": "nStep" 274 | }, 275 | "AU3_PixelGetColor": { 276 | "arg0": "nX", 277 | "arg1": "nY" 278 | }, 279 | "AU3_PixelSearch": { 280 | "arg0": "lpRect", 281 | "arg1": "nCol", 282 | "arg2": "nVar", 283 | "arg3": "nStep", 284 | "arg4": "pPointResult" 285 | }, 286 | "AU3_ProcessClose": { 287 | "arg0": "szProcess" 288 | }, 289 | "AU3_ProcessExists": { 290 | "arg0": "szProcess" 291 | }, 292 | "AU3_ProcessSetPriority": { 293 | "arg0": "szProcess", 294 | "arg1": "nPriority" 295 | }, 296 | "AU3_ProcessWait": { 297 | "arg0": "szProcess", 298 | "arg1": "nTimeout" 299 | }, 300 | "AU3_ProcessWaitClose": { 301 | "arg0": "szProcess", 302 | "arg1": "nTimeout" 303 | }, 304 | "AU3_Run": { 305 | "arg0": "szProgram", 306 | "arg1": "szDir", 307 | "arg2": "nShowFlag" 308 | }, 309 | "AU3_RunWait": { 310 | "arg0": "szProgram", 311 | "arg1": "szDir", 312 | "arg2": "nShowFlag" 313 | }, 314 | "AU3_RunAs": { 315 | "arg0": "szUser", 316 | "arg1": "szDomain", 317 | "arg2": "szPassword", 318 | "arg3": "nLogonFlag", 319 | "arg4": "szProgram", 320 | "arg5": "szDir", 321 | "arg6": "nShowFlag" 322 | }, 323 | "AU3_RunAsWait": { 324 | "arg0": "szUser", 325 | "arg1": "szDomain", 326 | "arg2": "szPassword", 327 | "arg3": "nLogonFlag", 328 | "arg4": "szProgram", 329 | "arg5": "szDir", 330 | "arg6": "nShowFlag" 331 | }, 332 | "AU3_Send": { 333 | "arg0": "szSendText", 334 | "arg1": "nMode" 335 | }, 336 | "AU3_Shutdown": { 337 | "arg0": "nFlags" 338 | }, 339 | "AU3_Sleep": { 340 | "arg0": "nMilliseconds" 341 | }, 342 | "AU3_StatusbarGetText": { 343 | "arg0": "szTitle", 344 | "arg1": "szText", 345 | "arg2": "nPart", 346 | "arg3": "szStatusText", 347 | "arg4": "nBufSize" 348 | }, 349 | "AU3_StatusbarGetTextByHandle": { 350 | "arg0": "hWnd", 351 | "arg1": "nPart", 352 | "arg2": "szStatusText", 353 | "arg3": "nBufSize" 354 | }, 355 | "AU3_ToolTip": { 356 | "arg0": "szTip", 357 | "arg1": "nX", 358 | "arg2": "nY" 359 | }, 360 | "AU3_WinActivate": { 361 | "arg0": "szTitle", 362 | "arg1": "szText" 363 | }, 364 | "AU3_WinActivateByHandle": { 365 | "arg0": "hWnd" 366 | }, 367 | "AU3_WinActive": { 368 | "arg0": "szTitle", 369 | "arg1": "szText" 370 | }, 371 | "AU3_WinActiveByHandle": { 372 | "arg0": "hWnd" 373 | }, 374 | "AU3_WinClose": { 375 | "arg0": "szTitle", 376 | "arg1": "szText" 377 | }, 378 | "AU3_WinCloseByHandle": { 379 | "arg0": "hWnd" 380 | }, 381 | "AU3_WinExists": { 382 | "arg0": "szTitle", 383 | "arg1": "szText" 384 | }, 385 | "AU3_WinExistsByHandle": { 386 | "arg0": "hWnd" 387 | }, 388 | "AU3_WinGetCaretPos": { 389 | "arg0": "lpPoint" 390 | }, 391 | "AU3_WinGetClassList": { 392 | "arg0": "szTitle", 393 | "arg1": "szText", 394 | "arg2": "szRetText", 395 | "arg3": "nBufSize" 396 | }, 397 | "AU3_WinGetClassListByHandle": { 398 | "arg0": "hWnd", 399 | "arg1": "szRetText", 400 | "arg2": "nBufSize" 401 | }, 402 | "AU3_WinGetClientSize": { 403 | "arg0": "szTitle", 404 | "arg1": "szText", 405 | "arg2": "lpRect" 406 | }, 407 | "AU3_WinGetClientSizeByHandle": { 408 | "arg0": "hWnd", 409 | "arg1": "lpRect" 410 | }, 411 | "AU3_WinGetHandle": { 412 | "arg0": "szTitle", 413 | "arg1": "szText" 414 | }, 415 | "AU3_WinGetHandleAsText": { 416 | "arg0": "szTitle", 417 | "arg1": "szText", 418 | "arg2": "szRetText", 419 | "arg3": "nBufSize" 420 | }, 421 | "AU3_WinGetPos": { 422 | "arg0": "szTitle", 423 | "arg1": "szText", 424 | "arg2": "lpRect" 425 | }, 426 | "AU3_WinGetPosByHandle": { 427 | "arg0": "hWnd", 428 | "arg1": "lpRect" 429 | }, 430 | "AU3_WinGetProcess": { 431 | "arg0": "szTitle", 432 | "arg1": "szText" 433 | }, 434 | "AU3_WinGetProcessByHandle": { 435 | "arg0": "hWnd" 436 | }, 437 | "AU3_WinGetState": { 438 | "arg0": "szTitle", 439 | "arg1": "szText" 440 | }, 441 | "AU3_WinGetStateByHandle": { 442 | "arg0": "hWnd" 443 | }, 444 | "AU3_WinGetText": { 445 | "arg0": "szTitle", 446 | "arg1": "szText", 447 | "arg2": "szRetText", 448 | "arg3": "nBufSize" 449 | }, 450 | "AU3_WinGetTextByHandle": { 451 | "arg0": "hWnd", 452 | "arg1": "szRetText", 453 | "arg2": "nBufSize" 454 | }, 455 | "AU3_WinGetTitle": { 456 | "arg0": "szTitle", 457 | "arg1": "szText", 458 | "arg2": "szRetText", 459 | "arg3": "nBufSize" 460 | }, 461 | "AU3_WinGetTitleByHandle": { 462 | "arg0": "hWnd", 463 | "arg1": "szRetText", 464 | "arg2": "nBufSize" 465 | }, 466 | "AU3_WinKill": { 467 | "arg0": "szTitle", 468 | "arg1": "szText" 469 | }, 470 | "AU3_WinKillByHandle": { 471 | "arg0": "hWnd" 472 | }, 473 | "AU3_WinMenuSelectItem": { 474 | "arg0": "szTitle", 475 | "arg1": "szText", 476 | "arg2": "szItem1", 477 | "arg3": "szItem2", 478 | "arg4": "szItem3", 479 | "arg5": "szItem4", 480 | "arg6": "szItem5", 481 | "arg7": "szItem6", 482 | "arg8": "szItem7", 483 | "arg9": "szItem8" 484 | }, 485 | "AU3_WinMenuSelectItemByHandle": { 486 | "arg0": "hWnd", 487 | "arg1": "szItem1", 488 | "arg2": "szItem2", 489 | "arg3": "szItem3", 490 | "arg4": "szItem4", 491 | "arg5": "szItem5", 492 | "arg6": "szItem6", 493 | "arg7": "szItem7", 494 | "arg8": "szItem8" 495 | }, 496 | "AU3_WinMove": { 497 | "arg0": "szTitle", 498 | "arg1": "szText", 499 | "arg2": "nX", 500 | "arg3": "nY", 501 | "arg4": "nWidth", 502 | "arg5": "nHeight" 503 | }, 504 | "AU3_WinMoveByHandle": { 505 | "arg0": "hWnd", 506 | "arg1": "nX", 507 | "arg2": "nY", 508 | "arg3": "nWidth", 509 | "arg4": "nHeight" 510 | }, 511 | "AU3_WinSetOnTop": { 512 | "arg0": "szTitle", 513 | "arg1": "szText", 514 | "arg2": "nFlag" 515 | }, 516 | "AU3_WinSetOnTopByHandle": { 517 | "arg0": "hWnd", 518 | "arg1": "nFlag" 519 | }, 520 | "AU3_WinSetState": { 521 | "arg0": "szTitle", 522 | "arg1": "szText", 523 | "arg2": "nFlags" 524 | }, 525 | "AU3_WinSetStateByHandle": { 526 | "arg0": "hWnd", 527 | "arg1": "nFlags" 528 | }, 529 | "AU3_WinSetTitle": { 530 | "arg0": "szTitle", 531 | "arg1": "szText", 532 | "arg2": "szNewTitle" 533 | }, 534 | "AU3_WinSetTitleByHandle": { 535 | "arg0": "hWnd", 536 | "arg1": "szNewTitle" 537 | }, 538 | "AU3_WinSetTrans": { 539 | "arg0": "szTitle", 540 | "arg1": "szText", 541 | "arg2": "nTrans" 542 | }, 543 | "AU3_WinSetTransByHandle": { 544 | "arg0": "hWnd", 545 | "arg1": "nTrans" 546 | }, 547 | "AU3_WinWait": { 548 | "arg0": "szTitle", 549 | "arg1": "szText", 550 | "arg2": "nTimeout" 551 | }, 552 | "AU3_WinWaitByHandle": { 553 | "arg0": "hWnd", 554 | "arg1": "nTimeout" 555 | }, 556 | "AU3_WinWaitActive": { 557 | "arg0": "szTitle", 558 | "arg1": "szText", 559 | "arg2": "nTimeout" 560 | }, 561 | "AU3_WinWaitActiveByHandle": { 562 | "arg0": "hWnd", 563 | "arg1": "nTimeout" 564 | }, 565 | "AU3_WinWaitClose": { 566 | "arg0": "szTitle", 567 | "arg1": "szText", 568 | "arg2": "nTimeout" 569 | }, 570 | "AU3_WinWaitCloseByHandle": { 571 | "arg0": "hWnd", 572 | "arg1": "nTimeout" 573 | }, 574 | "AU3_WinWaitNotActive": { 575 | "arg0": "szTitle", 576 | "arg1": "szText", 577 | "arg2": "nTimeout" 578 | }, 579 | "AU3_WinWaitNotActiveByHandle": { 580 | "arg0": "hWnd", 581 | "arg1": "nTimeout" 582 | } 583 | } -------------------------------------------------------------------------------- /tools/generate_arg_name.js: -------------------------------------------------------------------------------- 1 | const fs = require("fs"); 2 | const path = require("node:path"); 3 | const { forEach } = require("lodash"); 4 | 5 | const headerContent = fs.readFileSync( 6 | path.join(__dirname, "../dlls/AutoItX3_DLL.h"), 7 | "utf-8", 8 | ); 9 | 10 | const argumentNames = {}; 11 | 12 | headerContent 13 | .split("\n") 14 | .map((v) => v.trim()) 15 | .filter((v) => v.startsWith("AU3_API")) 16 | .map((v) => { 17 | return v.replace(/\/\*(.*?)\*\//g, ""); 18 | }) 19 | .map((v) => { 20 | const arguments = v 21 | .split("(") 22 | .pop() 23 | .split(")")[0] 24 | .split(",") 25 | .map((v) => v.trim()) 26 | .map((v, i) => { 27 | const temp = v.split(" "); 28 | return { 29 | type: temp[0], 30 | name: temp[1], 31 | index: i, 32 | }; 33 | }) 34 | .filter((v) => !!v.name); 35 | const fnName = v.split("WINAPI ").pop().split("(")[0]; 36 | return { name: fnName, arguments }; 37 | }) 38 | .filter((v) => v.arguments.length > 0) 39 | .forEach((v) => { 40 | argumentNames[v.name] = {}; 41 | forEach(v.arguments, (arg) => { 42 | argumentNames[v.name][`arg${arg.index}`] = arg.name; 43 | }); 44 | }); 45 | 46 | fs.writeFileSync("argumentNames.json", JSON.stringify(argumentNames, null, 2)); 47 | -------------------------------------------------------------------------------- /tools/generate_code.js: -------------------------------------------------------------------------------- 1 | // Ignore this script, everyone. 2 | 3 | const { forEach } = require("lodash"); 4 | const fs = require("fs"); 5 | 6 | const argumentNames = require("./argumentNames.json"); 7 | 8 | const autoitFunctions = { 9 | AU3_Init: ["void", []], 10 | AU3_error: ["int", []], 11 | AU3_AutoItSetOption: ["int", ["string16", "int"]], 12 | AU3_ClipGet: ["void", ["LPWSTR", "int"]], 13 | AU3_ClipPut: ["void", ["string16"]], 14 | AU3_ControlClick: [ 15 | "int", 16 | ["string16", "string16", "string16", "string16", "int", "int", "int"], 17 | ], 18 | AU3_ControlClickByHandle: [ 19 | "int", 20 | ["int", "int", "string16", "int", "int", "int"], 21 | ], 22 | AU3_ControlCommand: [ 23 | "void", 24 | [ 25 | "string16", 26 | "string16", 27 | "string16", 28 | "string16", 29 | "string16", 30 | "LPWSTR", 31 | "int", 32 | ], 33 | ], 34 | AU3_ControlCommandByHandle: [ 35 | "void", 36 | ["int", "int", "string16", "string16", "LPWSTR", "int"], 37 | ], 38 | AU3_ControlListView: [ 39 | "void", 40 | [ 41 | "string16", 42 | "string16", 43 | "string16", 44 | "string16", 45 | "string16", 46 | "string16", 47 | "LPWSTR", 48 | "int", 49 | ], 50 | ], 51 | AU3_ControlListViewByHandle: [ 52 | "void", 53 | ["int", "int", "string16", "string16", "string16", "LPWSTR", "int"], 54 | ], 55 | AU3_ControlDisable: ["int", ["string16", "string16", "string16"]], 56 | AU3_ControlDisableByHandle: ["int", ["int", "int"]], 57 | AU3_ControlEnable: ["int", ["string16", "string16", "string16"]], 58 | AU3_ControlEnableByHandle: ["int", ["int", "int"]], 59 | AU3_ControlFocus: ["int", ["string16", "string16", "string16"]], 60 | AU3_ControlFocusByHandle: ["int", ["int", "int"]], 61 | AU3_ControlGetFocus: ["void", ["string16", "string16", "LPWSTR", "int"]], 62 | AU3_ControlGetFocusByHandle: ["void", ["int", "LPWSTR", "int"]], 63 | AU3_ControlGetHandle: ["int", ["int", "string16"]], 64 | AU3_ControlGetHandleAsText: [ 65 | "void", 66 | [ 67 | "string16", 68 | /*[in,defaultvalue("")]*/ "string16", 69 | "string16", 70 | "LPWSTR", 71 | "int", 72 | ], 73 | ], 74 | AU3_ControlGetPos: ["int", ["string16", "string16", "string16", "LPRECT"]], 75 | AU3_ControlGetPosByHandle: ["int", ["int", "int", "LPRECT"]], 76 | AU3_ControlGetText: [ 77 | "void", 78 | ["string16", "string16", "string16", "LPWSTR", "int"], 79 | ], 80 | AU3_ControlGetTextByHandle: ["void", ["int", "int", "LPWSTR", "int"]], 81 | AU3_ControlHide: ["int", ["string16", "string16", "string16"]], 82 | AU3_ControlHideByHandle: ["int", ["int", "int"]], 83 | AU3_ControlMove: [ 84 | "int", 85 | ["string16", "string16", "string16", "int", "int", "int", "int"], 86 | ], 87 | AU3_ControlMoveByHandle: ["int", ["int", "int", "int", "int", "int", "int"]], 88 | AU3_ControlSend: [ 89 | "int", 90 | ["string16", "string16", "string16", "string16", "int"], 91 | ], 92 | AU3_ControlSendByHandle: ["int", ["int", "int", "string16", "int"]], 93 | AU3_ControlSetText: ["int", ["string16", "string16", "string16", "string16"]], 94 | AU3_ControlSetTextByHandle: ["int", ["int", "int", "string16"]], 95 | AU3_ControlShow: ["int", ["string16", "string16", "string16"]], 96 | AU3_ControlShowByHandle: ["int", ["int", "int"]], 97 | AU3_ControlTreeView: [ 98 | "void", 99 | [ 100 | "string16", 101 | "string16", 102 | "string16", 103 | "string16", 104 | "string16", 105 | "string16", 106 | "LPWSTR", 107 | "int", 108 | ], 109 | ], 110 | AU3_ControlTreeViewByHandle: [ 111 | "void", 112 | ["int", "int", "string16", "string16", "string16", "LPWSTR", "int"], 113 | ], 114 | AU3_DriveMapAdd: [ 115 | "void", 116 | [ 117 | "string16", 118 | "string16", 119 | "int", 120 | /*[in,defaultvalue("")]*/ "string16", 121 | /*[in,defaultvalue("")]*/ "string16", 122 | "LPWSTR", 123 | "int", 124 | ], 125 | ], 126 | AU3_DriveMapDel: ["int", ["string16"]], 127 | AU3_DriveMapGet: ["void", ["string16", "LPWSTR", "int"]], 128 | AU3_IsAdmin: ["int", []], 129 | AU3_MouseClick: [ 130 | "int", 131 | [/*[in,defaultvalue("LEFT")]*/ "string16", "int", "int", "int", "int"], 132 | ], 133 | AU3_MouseClickDrag: ["int", ["string16", "int", "int", "int", "int", "int"]], 134 | AU3_MouseDown: ["void", [/*[in,defaultvalue("LEFT")]*/ "string16"]], 135 | AU3_MouseGetCursor: ["int", []], 136 | AU3_MouseGetPos: ["void", ["LPPOINT"]], 137 | AU3_MouseMove: ["int", ["int", "int", "int"]], 138 | AU3_MouseUp: ["void", [/*[in,defaultvalue("LEFT")]*/ "string16"]], 139 | AU3_MouseWheel: ["void", ["string16", "int"]], 140 | AU3_Opt: ["int", ["string16", "int"]], 141 | AU3_PixelChecksum: ["uint", ["LPRECT", "int"]], 142 | AU3_PixelGetColor: ["int", ["int", "int"]], 143 | AU3_PixelSearch: [ 144 | "void", 145 | ["LPRECT", "int", /*default 0*/ "int", /*default 1*/ "int", "LPPOINT"], 146 | ], 147 | AU3_ProcessClose: ["int", ["string16"]], 148 | AU3_ProcessExists: ["int", ["string16"]], 149 | AU3_ProcessSetPriority: ["int", ["string16", "int"]], 150 | AU3_ProcessWait: ["int", ["string16", "int"]], 151 | AU3_ProcessWaitClose: ["int", ["string16", "int"]], 152 | AU3_Run: ["int", ["string16", /*[in,defaultvalue("")]*/ "string16", "int"]], 153 | AU3_RunWait: [ 154 | "int", 155 | ["string16", /*[in,defaultvalue("")]*/ "string16", "int"], 156 | ], 157 | AU3_RunAs: [ 158 | "int", 159 | [ 160 | "string16", 161 | "string16", 162 | "string16", 163 | "int", 164 | "string16", 165 | /*[in,defaultvalue("")]*/ "string16", 166 | "int", 167 | ], 168 | ], 169 | AU3_RunAsWait: [ 170 | "int", 171 | [ 172 | "string16", 173 | "string16", 174 | "string16", 175 | "int", 176 | "string16", 177 | /*[in,defaultvalue("")]*/ "string16", 178 | "int", 179 | ], 180 | ], 181 | AU3_Send: ["void", ["string16", "int"]], 182 | AU3_Shutdown: ["int", ["int"]], 183 | AU3_Sleep: ["void", ["int"]], 184 | AU3_StatusbarGetText: [ 185 | "int", 186 | [ 187 | "string16", 188 | /*[in,defaultvalue("")]*/ "string16", 189 | /*[in,defaultvalue(1)]*/ "int", 190 | "LPWSTR", 191 | "int", 192 | ], 193 | ], 194 | AU3_StatusbarGetTextByHandle: [ 195 | "int", 196 | ["int", /*[in,defaultvalue(1)]*/ "int", "LPWSTR", "int"], 197 | ], 198 | AU3_ToolTip: ["void", ["string16", "int", "int"]], 199 | AU3_WinActivate: ["int", ["string16", "string16"]], 200 | AU3_WinActivateByHandle: ["int", ["int"]], 201 | AU3_WinActive: ["int", ["string16", /*[in,defaultvalue("")]*/ "string16"]], 202 | AU3_WinActiveByHandle: ["int", ["int"]], 203 | AU3_WinClose: ["int", ["string16", /*[in,defaultvalue("")]*/ "string16"]], 204 | AU3_WinCloseByHandle: ["int", ["int"]], 205 | AU3_WinExists: ["int", ["string16", /*[in,defaultvalue("")]*/ "string16"]], 206 | AU3_WinExistsByHandle: ["int", ["int"]], 207 | AU3_WinGetCaretPos: ["int", ["LPPOINT"]], 208 | AU3_WinGetClassList: [ 209 | "void", 210 | ["string16", /*[in,defaultvalue("")]*/ "string16", "LPWSTR", "int"], 211 | ], 212 | AU3_WinGetClassListByHandle: ["void", ["int", "LPWSTR", "int"]], 213 | AU3_WinGetClientSize: [ 214 | "int", 215 | ["string16", /*[in,defaultvalue("")]*/ "string16", "LPRECT"], 216 | ], 217 | AU3_WinGetClientSizeByHandle: ["int", ["int", "LPRECT"]], 218 | AU3_WinGetHandle: ["int", ["string16", /*[in,defaultvalue("")]*/ "string16"]], 219 | AU3_WinGetHandleAsText: [ 220 | "void", 221 | ["string16", /*[in,defaultvalue("")]*/ "string16", "LPWSTR", "int"], 222 | ], 223 | AU3_WinGetPos: [ 224 | "int", 225 | ["string16", /*[in,defaultvalue("")]*/ "string16", "LPRECT"], 226 | ], 227 | AU3_WinGetPosByHandle: ["int", ["int", "LPRECT"]], 228 | AU3_WinGetProcess: [ 229 | "uint32", 230 | ["string16", /*[in,defaultvalue("")]*/ "string16"], 231 | ], 232 | AU3_WinGetProcessByHandle: ["uint32", ["int"]], 233 | AU3_WinGetState: ["int", ["string16", /*[in,defaultvalue("")]*/ "string16"]], 234 | AU3_WinGetStateByHandle: ["int", ["int"]], 235 | AU3_WinGetText: [ 236 | "void", 237 | ["string16", /*[in,defaultvalue("")]*/ "string16", "LPWSTR", "int"], 238 | ], 239 | AU3_WinGetTextByHandle: ["void", ["int", "LPWSTR", "int"]], 240 | AU3_WinGetTitle: [ 241 | "void", 242 | ["string16", /*[in,defaultvalue("")]*/ "string16", "LPWSTR", "int"], 243 | ], 244 | AU3_WinGetTitleByHandle: ["void", ["int", "LPWSTR", "int"]], 245 | AU3_WinKill: ["int", ["string16", /*[in,defaultvalue("")]*/ "string16"]], 246 | AU3_WinKillByHandle: ["int", ["int"]], 247 | AU3_WinMenuSelectItem: [ 248 | "int", 249 | [ 250 | "string16", 251 | /*[in,defaultvalue("")]*/ "string16", 252 | "string16", 253 | "string16", 254 | "string16", 255 | "string16", 256 | "string16", 257 | "string16", 258 | "string16", 259 | "string16", 260 | ], 261 | ], 262 | AU3_WinMenuSelectItemByHandle: [ 263 | "int", 264 | [ 265 | "int", 266 | "string16", 267 | "string16", 268 | "string16", 269 | "string16", 270 | "string16", 271 | "string16", 272 | "string16", 273 | "string16", 274 | ], 275 | ], 276 | AU3_WinMinimizeAll: ["void", []], 277 | AU3_WinMinimizeAllUndo: ["void", []], 278 | AU3_WinMove: [ 279 | "int", 280 | [ 281 | "string16", 282 | /*[in,defaultvalue("")]*/ "string16", 283 | "int", 284 | "int", 285 | "int", 286 | "int", 287 | ], 288 | ], 289 | AU3_WinMoveByHandle: ["int", ["int", "int", "int", "int", "int"]], 290 | AU3_WinSetOnTop: [ 291 | "int", 292 | ["string16", /*[in,defaultvalue("")]*/ "string16", "int"], 293 | ], 294 | AU3_WinSetOnTopByHandle: ["int", ["int", "int"]], 295 | AU3_WinSetState: [ 296 | "int", 297 | ["string16", /*[in,defaultvalue("")]*/ "string16", "int"], 298 | ], 299 | AU3_WinSetStateByHandle: ["int", ["int", "int"]], 300 | AU3_WinSetTitle: [ 301 | "int", 302 | ["string16", /*[in,defaultvalue("")]*/ "string16", "string16"], 303 | ], 304 | AU3_WinSetTitleByHandle: ["int", ["int", "string16"]], 305 | AU3_WinSetTrans: [ 306 | "int", 307 | ["string16", /*[in,defaultvalue("")]*/ "string16", "int"], 308 | ], 309 | AU3_WinSetTransByHandle: ["int", ["int", "int"]], 310 | AU3_WinWait: [ 311 | "int", 312 | ["string16", /*[in,defaultvalue("")]*/ "string16", "int"], 313 | ], 314 | AU3_WinWaitByHandle: ["int", ["int", "int"]], 315 | AU3_WinWaitActive: ["int", ["string16", "string16", "int"]], 316 | AU3_WinWaitActiveByHandle: ["int", ["int", "int"]], 317 | AU3_WinWaitClose: [ 318 | "int", 319 | ["string16", /*[in,defaultvalue("")]*/ "string16", "int"], 320 | ], 321 | AU3_WinWaitCloseByHandle: ["int", ["int", "int"]], 322 | AU3_WinWaitNotActive: [ 323 | "int", 324 | ["string16", /*[in,defaultvalue("")]*/ "string16", "int"], 325 | ], 326 | AU3_WinWaitNotActiveByHandle: ["int", ["int", "int"]], 327 | }; 328 | const AU3_INTDEFAULT = -2147483647; 329 | const SW_SHOWNORMAL = 1; 330 | const defaultArgs = { 331 | ClipGet: { 1: 512 }, 332 | ControlClick: { 333 | 1: "", 334 | 3: "LEFT", 335 | 4: 1, 336 | 5: AU3_INTDEFAULT, 337 | 6: AU3_INTDEFAULT, 338 | }, 339 | ControlClickByHandle: { 340 | 2: "LEFT", 341 | 3: 1, 342 | 4: AU3_INTDEFAULT, 343 | 5: AU3_INTDEFAULT, 344 | }, 345 | ControlCommand: { 1: "", 4: "", 6: 256 }, 346 | ControlCommandByHandle: { 3: "", 5: 256 }, 347 | ControlListView: { 1: "", 4: "", 5: "", 7: 256 }, 348 | ControlListViewByHandle: { 3: "", 4: "", 6: 256 }, 349 | ControlDisable: { 1: "" }, 350 | ControlEnable: { 1: "" }, 351 | ControlFocus: { 1: "" }, 352 | ControlGetFocus: { 1: "", 3: 256 }, 353 | ControlGetFocusByHandle: { 2: 256 }, 354 | ControlGetHandleAsText: { 1: "", 4: 256 }, 355 | ControlGetPos: { 1: "" }, 356 | ControlGetText: { 1: "", 4: 512 }, 357 | ControlGetTextByHandle: { 3: 512 }, 358 | ControlHide: { 1: "" }, 359 | ControlMove: { 1: "", 5: -1, 6: -1 }, 360 | ControlMoveByHandle: { 4: -1, 5: -1 }, 361 | ControlSend: { 1: "", 4: 0 }, 362 | ControlSendByHandle: { 3: 0 }, 363 | ControlSetText: { 1: "" }, 364 | ControlShow: { 1: "" }, 365 | ControlTreeView: { 1: "", 4: "", 5: "", 7: 256 }, 366 | ControlTreeViewByHandle: { 3: "", 4: "", 6: 256 }, 367 | DriveMapAdd: { 3: "", 4: "", 6: 256 }, 368 | DriveMapGet: { 2: 256 }, 369 | MouseClick: { 0: "LEFT", 1: AU3_INTDEFAULT, 2: AU3_INTDEFAULT, 3: 1, 4: -1 }, 370 | MouseClickDrag: { 5: -1 }, 371 | MouseDown: { 0: "LEFT" }, 372 | MouseMove: { 2: -1 }, 373 | MouseUp: { 0: "LEFT" }, 374 | PixelChecksum: { 1: 1 }, 375 | PixelSearch: { 2: 0, 3: 1 }, 376 | ProcessWait: { 1: 0 }, 377 | ProcessWaitClose: { 1: 0 }, 378 | Run: { 1: "", 2: SW_SHOWNORMAL }, 379 | RunWait: { 1: "", 2: SW_SHOWNORMAL }, 380 | RunAs: { 5: "", 6: SW_SHOWNORMAL }, 381 | RunAsWait: { 5: "", 6: SW_SHOWNORMAL }, 382 | Send: { 1: 0 }, 383 | StatusbarGetText: { 1: "", 2: 1, 4: 256 }, 384 | StatusbarGetTextByHandle: { 1: 1, 3: 256 }, 385 | ToolTip: { 1: AU3_INTDEFAULT, 2: AU3_INTDEFAULT }, 386 | WinActivate: { 1: "" }, 387 | WinClose: { 1: "" }, 388 | WinExists: { 1: "" }, 389 | WinGetClassList: { 1: "", 3: 512 }, 390 | WinGetClassListByHandle: { 2: 512 }, 391 | WinGetClientSize: { 1: "" }, 392 | WinGetHandle: { 1: "" }, 393 | WinGetHandleAsText: { 1: "", 3: 256 }, 394 | WinGetPos: { 1: "" }, 395 | WinGetProcess: { 1: "" }, 396 | WinGetState: { 1: "" }, 397 | WinGetText: { 1: "", 3: 512 }, 398 | WinGetTextByHandle: { 2: 512 }, 399 | WinGetTitle: { 1: "", 3: 512 }, 400 | WinGetTitleByHandle: { 2: 512 }, 401 | WinKill: { 1: "" }, 402 | WinMenuSelectItem: { 1: "", 3: "", 4: "", 5: "", 6: "", 7: "", 8: "", 9: "" }, 403 | WinMenuSelectItemByHandle: { 404 | 2: "", 405 | 3: "", 406 | 4: "", 407 | 5: "", 408 | 6: "", 409 | 7: "", 410 | 8: "", 411 | }, 412 | WinMove: { 1: "", 4: -1, 5: -1 }, 413 | WinMoveByHandle: { 3: -1, 4: -1 }, 414 | WinSetOnTop: { 1: "" }, 415 | WinSetState: { 1: "" }, 416 | WinSetTitle: { 1: "" }, 417 | WinSetTrans: { 1: "" }, 418 | WinWait: { 1: "", 2: 0 }, 419 | WinWaitByHandle: { 1: 0 }, 420 | WinWaitActive: { 1: "", 2: 0 }, 421 | WinWaitActiveByHandle: { 1: 0 }, 422 | WinWaitClose: { 1: "", 2: 0 }, 423 | WinWaitCloseByHandle: { 1: 0 }, 424 | WinWaitNotActive: { 1: "", 2: 0 }, 425 | WinWaitNotActiveByHandle: { 1: 0 }, 426 | }; 427 | const argToReturnValue = { 428 | ClipGet: { arg: 0, type: "wstring", ex_arg: 1 }, 429 | ControlCommand: { arg: 5, type: "wstring", ex_arg: 6 }, 430 | ControlCommandByHandle: { arg: 4, type: "wstring", ex_arg: 5 }, 431 | ControlListView: { arg: 6, type: "wstring", ex_arg: 7 }, 432 | ControlListViewByHandle: { arg: 5, type: "wstring", ex_arg: 6 }, 433 | ControlGetFocus: { arg: 2, type: "wstring", ex_arg: 3 }, 434 | ControlGetFocusByHandle: { arg: 1, type: "wstring", ex_arg: 2 }, 435 | ControlGetHandleAsText: { arg: 3, type: "wstring", ex_arg: 4 }, 436 | ControlGetPos: { arg: 3, type: "rect" }, 437 | ControlGetPosByHandle: { arg: 2, type: "rect" }, 438 | ControlGetText: { arg: 3, type: "wstring", ex_arg: 4 }, 439 | ControlGetTextByHandle: { arg: 2, type: "wstring", ex_arg: 3 }, 440 | ControlTreeView: { arg: 6, type: "wstring", ex_arg: 7 }, 441 | ControlTreeViewByHandle: { arg: 5, type: "wstring", ex_arg: 6 }, 442 | DriveMapAdd: { arg: 5, type: "wstring", ex_arg: 6 }, 443 | DriveMapGet: { arg: 1, type: "wstring", ex_arg: 2 }, 444 | MouseGetPos: { arg: 0, type: "point" }, 445 | PixelSearch: { arg: 4, type: "point" }, 446 | StatusbarGetText: { arg: 3, type: "wstring", ex_arg: 4 }, 447 | StatusbarGetTextByHandle: { arg: 2, type: "wstring", ex_arg: 3 }, 448 | WinGetCaretPos: { arg: 0, type: "point" }, 449 | WinGetClassList: { arg: 2, type: "wstring", ex_arg: 3 }, 450 | WinGetClassListByHandle: { arg: 1, type: "wstring", ex_arg: 2 }, 451 | WinGetClientSize: { arg: 2, type: "rect" }, 452 | WinGetClientSizeByHandle: { arg: 1, type: "rect" }, 453 | WinGetHandleAsText: { arg: 2, type: "wstring", ex_arg: 3 }, 454 | WinGetPos: { arg: 2, type: "rect" }, 455 | WinGetPosByHandle: { arg: 1, type: "rect" }, 456 | WinGetText: { arg: 2, type: "wstring", ex_arg: 3 }, 457 | WinGetTextByHandle: { arg: 1, type: "wstring", ex_arg: 2 }, 458 | WinGetTitle: { arg: 2, type: "wstring", ex_arg: 3 }, 459 | WinGetTitleByHandle: { arg: 1, type: "wstring", ex_arg: 2 }, 460 | }; 461 | 462 | function lowercaseFirstLetter(str) { 463 | return str.charAt(0).toLowerCase() + str.slice(1); 464 | } 465 | 466 | const saveContent = [ 467 | `const lib: any = {};\nconst fn:any = {};\nconst wchar:any = {};`, 468 | ]; 469 | 470 | forEach(autoitFunctions, (config, fnName) => { 471 | const key = lowercaseFirstLetter(fnName.replace("AU3_", "")); 472 | const defaultArgKey = fnName.replace("AU3_", ""); 473 | const result = JSON.stringify(config[0]); 474 | const arguments = JSON.stringify( 475 | config[1].map((v, i) => { 476 | if (argToReturnValue.hasOwnProperty(defaultArgKey)) { 477 | const toReturn = argToReturnValue[defaultArgKey]; 478 | if (i === toReturn.arg) { 479 | if (toReturn.type !== "wstring") { 480 | v = `_Out_ ${v}*`; 481 | } 482 | } 483 | } 484 | return v; 485 | }), 486 | ); 487 | const fn = `lib.func("${fnName}", ${result}, ${arguments})`.replace( 488 | /\n/g, 489 | "", 490 | ); 491 | const argTypes = { 492 | string16: "string", 493 | int: "number", 494 | void: "void", 495 | uint: "number", 496 | uint32: "number", 497 | LPRECT: "Rect", 498 | LPPOINT: "Point", 499 | }; 500 | // result 501 | if (!argTypes.hasOwnProperty(config[0])) { 502 | throw { message: `type '${config[0]}' not found` }; 503 | } 504 | let resultType = argTypes[config[0]]; 505 | let resultHandleCode = ""; 506 | let resultHandleType = ""; 507 | const passArgs = []; 508 | const getArgName = (key) => { 509 | if (argumentNames.hasOwnProperty(fnName)) { 510 | const kv = argumentNames[fnName]; 511 | if (kv[key]) return kv[key]; 512 | } 513 | return key; 514 | }; 515 | // generate arguments 516 | const gen_arguments = config[1] 517 | .map((argType, i) => { 518 | let isReturnType = false; 519 | 520 | if (argToReturnValue.hasOwnProperty(defaultArgKey)) { 521 | const toReturn = argToReturnValue[defaultArgKey]; 522 | if (i === toReturn.arg) { 523 | if (toReturn.type === "wstring") { 524 | resultType = "string"; 525 | resultHandleCode = `let result = Buffer.alloc(${getArgName(`arg${toReturn.ex_arg}`)} * wchar.size);`; 526 | resultHandleType = "string"; 527 | passArgs.push(`result`); 528 | } else { 529 | resultType = toReturn.type === "point" ? "Point" : "Rect"; 530 | resultHandleCode = `let result: any = {}`; 531 | resultHandleType = "struct"; 532 | passArgs.push(`result`); 533 | } 534 | isReturnType = true; 535 | } 536 | } 537 | 538 | if (["LPWSTR", "LPRECT", "LPPOINT"].includes(argType)) { 539 | if (!isReturnType) { 540 | passArgs.push(`${getArgName(`arg${i}`)}`); 541 | return `${getArgName(`arg${i}`)}: ${argTypes[argType]}`; 542 | } 543 | return; 544 | } 545 | 546 | if (!argTypes.hasOwnProperty(argType)) { 547 | throw { message: `type '${argType}' not found` }; 548 | } 549 | 550 | let defaultValue = ""; 551 | 552 | if (defaultArgs.hasOwnProperty(defaultArgKey)) { 553 | if (defaultArgs[defaultArgKey].hasOwnProperty(i)) { 554 | let val = defaultArgs[defaultArgKey][i]; 555 | if (typeof val === "string") { 556 | val = JSON.stringify(val); 557 | } 558 | defaultValue = ` = ${val}`; 559 | } 560 | } 561 | 562 | passArgs.push(`${getArgName(`arg${i}`)}`); 563 | 564 | return `${getArgName(`arg${i}`)}: ${argTypes[argType]}${defaultValue}`; 565 | }) 566 | .filter((v) => !!v); 567 | 568 | const getResolve = () => { 569 | if (resultHandleCode) { 570 | if (resultHandleType === "string") { 571 | return "else resolve(getWString(result));"; 572 | } 573 | 574 | return "else resolve(result);"; 575 | } 576 | return "else resolve(res);"; 577 | }; 578 | 579 | const generated = ` 580 | export const ${key} = (${gen_arguments.join(", ")}): Promise<${resultType}> => { 581 | if (!fn.hasOwnProperty("${key}")) { 582 | fn["${key}"] = ${fn}; 583 | } 584 | ${resultHandleCode} 585 | 586 | return new Promise((resolve, reject) => { 587 | fn["${key}"].async(${passArgs.length ? passArgs.join(", ") + ", " : ""}(err: Error, ${resultHandleCode ? "_" : "res"}: any) => { 588 | if (err) reject(err); 589 | ${getResolve()} 590 | }); 591 | }); 592 | }; 593 | `.trim(); 594 | 595 | console.log(generated); 596 | console.log(""); 597 | saveContent.push(generated); 598 | }); 599 | 600 | fs.writeFileSync("gen.ts", saveContent.join("\n\n")); 601 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "include": ["src/**/*", "tests/**/*"], 3 | "exclude": ["node_modules", "**/*.spec.ts"], 4 | 5 | "compilerOptions": { 6 | /* Visit https://aka.ms/tsconfig to read more about this file */ 7 | 8 | /* Projects */ 9 | // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ 10 | // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ 11 | // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ 12 | // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ 13 | // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ 14 | // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ 15 | 16 | /* Language and Environment */ 17 | "target": "es2016" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, 18 | // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ 19 | // "jsx": "preserve", /* Specify what JSX code is generated. */ 20 | // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ 21 | // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ 22 | // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ 23 | // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ 24 | // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ 25 | // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ 26 | // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ 27 | // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ 28 | // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ 29 | 30 | /* Modules */ 31 | "module": "commonjs" /* Specify what module code is generated. */, 32 | // "rootDir": "./", /* Specify the root folder within your source files. */ 33 | // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ 34 | // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ 35 | // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ 36 | // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ 37 | // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ 38 | // "types": [], /* Specify type package names to be included without being referenced in a source file. */ 39 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ 40 | // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ 41 | // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ 42 | // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ 43 | // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ 44 | // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ 45 | // "resolveJsonModule": true, /* Enable importing .json files. */ 46 | // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ 47 | // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ 48 | 49 | /* JavaScript Support */ 50 | "allowJs": true /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */, 51 | // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ 52 | // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ 53 | 54 | /* Emit */ 55 | "declaration": true /* Generate .d.ts files from TypeScript and JavaScript files in your project. */, 56 | "declarationMap": true /* Create sourcemaps for d.ts files. */, 57 | // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ 58 | // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ 59 | // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ 60 | // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ 61 | "outDir": "./dist" /* Specify an output folder for all emitted files. */, 62 | // "removeComments": true, /* Disable emitting comments. */ 63 | // "noEmit": true, /* Disable emitting files from a compilation. */ 64 | // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ 65 | // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ 66 | // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ 67 | // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ 68 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ 69 | // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ 70 | // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ 71 | // "newLine": "crlf", /* Set the newline character for emitting files. */ 72 | // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ 73 | // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ 74 | // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ 75 | // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ 76 | // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ 77 | // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ 78 | 79 | /* Interop Constraints */ 80 | // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ 81 | // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ 82 | // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ 83 | "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, 84 | // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ 85 | "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, 86 | 87 | /* Type Checking */ 88 | "strict": true /* Enable all strict type-checking options. */, 89 | // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ 90 | // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ 91 | // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ 92 | // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ 93 | // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ 94 | // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ 95 | // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ 96 | // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ 97 | // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ 98 | // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ 99 | // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ 100 | // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ 101 | // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ 102 | // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ 103 | // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ 104 | // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ 105 | // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ 106 | // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ 107 | 108 | /* Completeness */ 109 | // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ 110 | "skipLibCheck": true /* Skip type checking all .d.ts files. */ 111 | } 112 | } 113 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@isaacs/cliui@^8.0.2": 6 | version "8.0.2" 7 | resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" 8 | integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== 9 | dependencies: 10 | string-width "^5.1.2" 11 | string-width-cjs "npm:string-width@^4.2.0" 12 | strip-ansi "^7.0.1" 13 | strip-ansi-cjs "npm:strip-ansi@^6.0.1" 14 | wrap-ansi "^8.1.0" 15 | wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" 16 | 17 | "@pkgjs/parseargs@^0.11.0": 18 | version "0.11.0" 19 | resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" 20 | integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== 21 | 22 | "@types/node@^20.11.19": 23 | version "20.11.19" 24 | resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.19.tgz#b466de054e9cb5b3831bee38938de64ac7f81195" 25 | integrity sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ== 26 | dependencies: 27 | undici-types "~5.26.4" 28 | 29 | ansi-regex@^5.0.1: 30 | version "5.0.1" 31 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 32 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 33 | 34 | ansi-regex@^6.0.1: 35 | version "6.0.1" 36 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" 37 | integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== 38 | 39 | ansi-styles@^4.0.0: 40 | version "4.3.0" 41 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 42 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 43 | dependencies: 44 | color-convert "^2.0.1" 45 | 46 | ansi-styles@^6.1.0: 47 | version "6.2.1" 48 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" 49 | integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== 50 | 51 | balanced-match@^1.0.0: 52 | version "1.0.2" 53 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 54 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 55 | 56 | brace-expansion@^2.0.1: 57 | version "2.0.1" 58 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" 59 | integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== 60 | dependencies: 61 | balanced-match "^1.0.0" 62 | 63 | color-convert@^2.0.1: 64 | version "2.0.1" 65 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 66 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 67 | dependencies: 68 | color-name "~1.1.4" 69 | 70 | color-name@~1.1.4: 71 | version "1.1.4" 72 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 73 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 74 | 75 | cross-spawn@^7.0.0: 76 | version "7.0.3" 77 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 78 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 79 | dependencies: 80 | path-key "^3.1.0" 81 | shebang-command "^2.0.0" 82 | which "^2.0.1" 83 | 84 | debug@^4.1.1: 85 | version "4.3.4" 86 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 87 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 88 | dependencies: 89 | ms "2.1.2" 90 | 91 | eastasianwidth@^0.2.0: 92 | version "0.2.0" 93 | resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" 94 | integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== 95 | 96 | emoji-regex@^8.0.0: 97 | version "8.0.0" 98 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 99 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 100 | 101 | emoji-regex@^9.2.2: 102 | version "9.2.2" 103 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" 104 | integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== 105 | 106 | foreground-child@^3.1.0: 107 | version "3.1.1" 108 | resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" 109 | integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== 110 | dependencies: 111 | cross-spawn "^7.0.0" 112 | signal-exit "^4.0.1" 113 | 114 | get-symbol-from-current-process-h@^1.0.2: 115 | version "1.0.2" 116 | resolved "https://registry.yarnpkg.com/get-symbol-from-current-process-h/-/get-symbol-from-current-process-h-1.0.2.tgz#510af52eaef873f7028854c3377f47f7bb200265" 117 | integrity sha512-syloC6fsCt62ELLrr1VKBM1ggOpMdetX9hTrdW77UQdcApPHLmf7CI7OKcN1c9kYuNxKcDe4iJ4FY9sX3aw2xw== 118 | 119 | glob@^10.3.7: 120 | version "10.3.10" 121 | resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" 122 | integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== 123 | dependencies: 124 | foreground-child "^3.1.0" 125 | jackspeak "^2.3.5" 126 | minimatch "^9.0.1" 127 | minipass "^5.0.0 || ^6.0.2 || ^7.0.0" 128 | path-scurry "^1.10.1" 129 | 130 | iconv-lite@^0.6.3: 131 | version "0.6.3" 132 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" 133 | integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== 134 | dependencies: 135 | safer-buffer ">= 2.1.2 < 3.0.0" 136 | 137 | is-fullwidth-code-point@^3.0.0: 138 | version "3.0.0" 139 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 140 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 141 | 142 | isexe@^2.0.0: 143 | version "2.0.0" 144 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 145 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 146 | 147 | jackspeak@^2.3.5: 148 | version "2.3.6" 149 | resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" 150 | integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== 151 | dependencies: 152 | "@isaacs/cliui" "^8.0.2" 153 | optionalDependencies: 154 | "@pkgjs/parseargs" "^0.11.0" 155 | 156 | koffi@^2.8.0: 157 | version "2.8.0" 158 | resolved "https://registry.yarnpkg.com/koffi/-/koffi-2.8.0.tgz#26cb3a608ef8ce4684ff6ed7096fffeec21da7cb" 159 | integrity sha512-EXhiH9Ya4f+o4+24+uV4vFAMyPEskARVUaY8VHbIYWqkQVPTDyYJCBNfxp0Kxw6WdhaMwXeR8xIUyz8R2H8Rew== 160 | 161 | lodash@^4.17.21: 162 | version "4.17.21" 163 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 164 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 165 | 166 | "lru-cache@^9.1.1 || ^10.0.0": 167 | version "10.2.0" 168 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" 169 | integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== 170 | 171 | minimatch@^9.0.1: 172 | version "9.0.3" 173 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" 174 | integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== 175 | dependencies: 176 | brace-expansion "^2.0.1" 177 | 178 | "minipass@^5.0.0 || ^6.0.2 || ^7.0.0": 179 | version "7.0.4" 180 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" 181 | integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== 182 | 183 | ms@2.1.2: 184 | version "2.1.2" 185 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 186 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 187 | 188 | node-addon-api@^3.0.0: 189 | version "3.2.1" 190 | resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" 191 | integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== 192 | 193 | node-gyp-build@^4.2.1: 194 | version "4.8.0" 195 | resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.0.tgz#3fee9c1731df4581a3f9ead74664369ff00d26dd" 196 | integrity sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og== 197 | 198 | path-key@^3.1.0: 199 | version "3.1.1" 200 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 201 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 202 | 203 | path-scurry@^1.10.1: 204 | version "1.10.1" 205 | resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" 206 | integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== 207 | dependencies: 208 | lru-cache "^9.1.1 || ^10.0.0" 209 | minipass "^5.0.0 || ^6.0.2 || ^7.0.0" 210 | 211 | prettier@^3.2.5: 212 | version "3.2.5" 213 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368" 214 | integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A== 215 | 216 | ref-napi@^3.0.3: 217 | version "3.0.3" 218 | resolved "https://registry.yarnpkg.com/ref-napi/-/ref-napi-3.0.3.tgz#e259bfc2bbafb3e169e8cd9ba49037dd00396b22" 219 | integrity sha512-LiMq/XDGcgodTYOMppikEtJelWsKQERbLQsYm0IOOnzhwE9xYZC7x8txNnFC9wJNOkPferQI4vD4ZkC0mDyrOA== 220 | dependencies: 221 | debug "^4.1.1" 222 | get-symbol-from-current-process-h "^1.0.2" 223 | node-addon-api "^3.0.0" 224 | node-gyp-build "^4.2.1" 225 | 226 | rimraf@^5.0.5: 227 | version "5.0.5" 228 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.5.tgz#9be65d2d6e683447d2e9013da2bf451139a61ccf" 229 | integrity sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A== 230 | dependencies: 231 | glob "^10.3.7" 232 | 233 | "safer-buffer@>= 2.1.2 < 3.0.0": 234 | version "2.1.2" 235 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 236 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 237 | 238 | shebang-command@^2.0.0: 239 | version "2.0.0" 240 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 241 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 242 | dependencies: 243 | shebang-regex "^3.0.0" 244 | 245 | shebang-regex@^3.0.0: 246 | version "3.0.0" 247 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 248 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 249 | 250 | signal-exit@^4.0.1: 251 | version "4.1.0" 252 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" 253 | integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== 254 | 255 | "string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0: 256 | name string-width-cjs 257 | version "4.2.3" 258 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 259 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 260 | dependencies: 261 | emoji-regex "^8.0.0" 262 | is-fullwidth-code-point "^3.0.0" 263 | strip-ansi "^6.0.1" 264 | 265 | string-width@^5.0.1, string-width@^5.1.2: 266 | version "5.1.2" 267 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" 268 | integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== 269 | dependencies: 270 | eastasianwidth "^0.2.0" 271 | emoji-regex "^9.2.2" 272 | strip-ansi "^7.0.1" 273 | 274 | "strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: 275 | name strip-ansi-cjs 276 | version "6.0.1" 277 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 278 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 279 | dependencies: 280 | ansi-regex "^5.0.1" 281 | 282 | strip-ansi@^7.0.1: 283 | version "7.1.0" 284 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" 285 | integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== 286 | dependencies: 287 | ansi-regex "^6.0.1" 288 | 289 | typescript@^5.3.3: 290 | version "5.3.3" 291 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" 292 | integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== 293 | 294 | undici-types@~5.26.4: 295 | version "5.26.5" 296 | resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" 297 | integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== 298 | 299 | which@^2.0.1: 300 | version "2.0.2" 301 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 302 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 303 | dependencies: 304 | isexe "^2.0.0" 305 | 306 | "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": 307 | version "7.0.0" 308 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 309 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 310 | dependencies: 311 | ansi-styles "^4.0.0" 312 | string-width "^4.1.0" 313 | strip-ansi "^6.0.0" 314 | 315 | wrap-ansi@^8.1.0: 316 | version "8.1.0" 317 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" 318 | integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== 319 | dependencies: 320 | ansi-styles "^6.1.0" 321 | string-width "^5.0.1" 322 | strip-ansi "^7.0.1" 323 | --------------------------------------------------------------------------------