基于 大漠插件 封装的 JS 版按键精灵!从此可以用 JS 写自动脚本了 ✌ 项目地址
使用
建议使用 typescript 来调用本插件,插件内置了很多 有用类型,你可以获得更好的代码提示
如果你是想用它来写游戏脚本,强烈推荐配合 wow-state-machine 来使用。
推荐阅读 用 JS 写游戏自动脚本是什么体验?
请务必使用管理员身份运行 node,因为大漠插件的注册和某些后台绑定模式需要管理员权限
dm.dll 可能会被杀毒软件误杀,这个暂时没啥好办法…
开发工具
大漠综合工具可能会被杀毒软件误杀,自行决定是否使用
环境
windows 平台
32 位 node(winax 最高支持的 node 版本)
预装 windows-build-tools 编译环境
1
2// 管理员身份运行
npm install --global --production windows-build-tools --add-python-to-path
安装
1 | npm install dm.dll |
API
本插件的 api 基本同大漠说明文档保持一致,稍有改动的部分也会在后文指出,所以你可以对照它来查看对应 api 的详细说明
目前只封装了大漠插件最常用的功能,API 太多,待整理…不过如果你需要的 api 本插件没有提供,你可以通过如下方式直接调用大漠插件的 api
1 | // node |
基本设置
- getPath (): string
- setPath (path: string): DmRet
- setErrorDisplay (flag: ErrorDisplay): DmRet
同大漠插件的 SetShowErrorMsg
窗口
- findWindow (className: string, title: string, parentHWnd?: number): number | undefined
增强了原生 findWindow 的功能,你可以直接传入一个父窗口句柄来查找子窗口句柄
- enumWindow (className: string, title: string, filter: number, parentHWnd = 0): number[]
- getWindow (hWnd: number, flag:GetWindowFlag): number
- getPointWindow (x: number, y: number): number
- getClientSize (hWnd: number): Size
- moveWindow (hWnd: number, x: number, y: number): DmRet
- setWindowSize (hWnd: number, width: number, height: number): DmRet
- setWindowState (hWnd: number, state: WindowState): DmRet
- sendPaste (hWnd: number): DmRet
- sendString (hWnd: number, content: string): DmRet
后台
- bindWindow (hWnd: number, display: DisplayType, mouse: MouseType, keypad: KeypadType,mode: 0 | 2 | 4): DmRet
unBindWindow (): DmRet
键鼠
- setMouseRange (x1: number, y1: number, x2: number, y2: number): void
不同于 dm.dll.LockMouseRect 该方法只会限制 moveTo 的活动范围,不传参则取消限制
- getCursorPos (): Coordinate
- getKeyState (keyCode: number): KeyState
- moveTo (x: number, y: number): DmRet
- leftClick (): DmRet
- leftDoubleClick (): DmRet
- leftDown (): DmRet
- leftUp (): DmRet
- rightClick (): DmRet
- rightDown (): DmRet
- rightUp (): DmRet
- wheelDown (): DmRet
- wheelUp (): DmRet
- keyPress (keyCode: number): DmRet
- keyDown (keyCode: number): DmRet
- keyUp (keyCode: number): DmRet
图色
- capture (x1: number, y1: number, x2: number, y2: number, fileName: string)
- findPic (x1: number, y1: number, x2: number, y2: number, picName: string, deltaColor: string, sim: number, dir: FindPicDir: FindRet | undefined
- findPicEx (x1: number, y1: number, x2: number, y2: number, picName: string, deltaColor: string, sim: number, dir: FindPicDir: FindRet[]
- getColor (x: number, y: number): string
- getColorNum (x1: number, y1: number, x2: number, y2: number, color: string, sim: number): number
- getAveRGB (x1: number, y1: number, x2: number, y2: number): string
- findColor (x1: number, y1: number, x2: number, y2: number, color: string, sim: number, dir: FindDir: Coordinate | undefined
文字识别
- getNowDict (): number
- setDict (index: number, file: string): DmRet
- findStr (x1: number, y1: number, x2: number, y2: number, string: string, colorFormat: string, sim: number): FindRet | undefined
- ocr (x1: number, y1: number, x2: number, y2: number, colorFormat: string, sim: number): string
- getWords (x1: number, y1: number, x2: number, y2: number, colorFormat: string, sim: number): OcrRet | undefined
系统
- getScreenSize (): Size
获取屏幕大小,该函数合并了 GetScreenWidth 和 GetScreenHeight