@loverto/dm.dll
Version:
JS版按键精灵(大漠插件)
232 lines (231 loc) • 6.82 kB
JavaScript
;
const winax = require("winax");
const child_process_1 = require("child_process");
const path = require("path");
function getDM() {
try {
return new winax.Object('dm.dmsoft');
}
catch (e) {
try {
child_process_1.execSync(`regsvr32 ${path.resolve(__dirname, 'dm.dll')} /s`);
}
catch (e) {
// fix electron not work
child_process_1.execSync(`regsvr32 ${path.resolve(__dirname.replace('app.asar', 'app.asar.unpacked'), 'dm.dll')} /s`);
}
return new winax.Object('dm.dmsoft');
}
}
const dm = getDM();
let mouseRange;
function setMouseRange() {
if (arguments.length === 4)
mouseRange = Array.from(arguments);
else
mouseRange = undefined;
}
module.exports = {
dll: dm,
getPath() {
return dm.GetPath();
},
setPath(path) {
return dm.SetPath(path);
},
setErrorDisplay(flag) {
return dm.SetShowErrorMsg(flag);
},
getCursorPos() {
let x = new winax.Variant(-1, 'byref');
let y = new winax.Variant(-1, 'byref');
dm.GetCursorPos(x, y);
return { x: Number(x), y: Number(y) };
},
getKeyState(keyCode) {
return dm.GetKeyState(keyCode);
},
setMouseRange,
moveTo(x, y) {
if (mouseRange) {
if (x < mouseRange[0])
x = mouseRange[0];
else if (x > mouseRange[2])
x = mouseRange[2];
if (y < mouseRange[1])
y = mouseRange[1];
else if (y > mouseRange[3])
y = mouseRange[3];
}
return dm.MoveTo(x, y);
},
leftClick() {
return dm.LeftClick();
},
leftDoubleClick() {
return dm.LeftDoubleClick();
},
leftDown() {
return dm.LeftDown();
},
leftUp() {
return dm.LeftUp();
},
rightClick() {
return dm.RightClick();
},
rightDown() {
return dm.RightDown();
},
rightUp() {
return dm.RightUp();
},
wheelDown() {
return dm.WheelDown();
},
wheelUp() {
return dm.WheelUp();
},
keyPress(keyCode) {
return dm.KeyPress(keyCode);
},
keyDown(keyCode) {
return dm.KeyDown(keyCode);
},
keyUp(keyCode) {
return dm.KeyUp(keyCode);
},
findWindow(className, title, parentHWnd) {
const hWnd = parentHWnd ? this.enumWindow(className, title, 3, parentHWnd)[0] : dm.FindWindow(className, title);
if (hWnd)
return hWnd;
},
enumWindow(className, title, filter, parentHWnd = 0) {
const wins = dm.EnumWindow(parentHWnd, title, className, filter);
return wins.length > 0 ? wins.split(',').map(hWnd => Number(hWnd)) : [];
},
getWindow(hWnd, flag) {
return dm.GetWindow(hWnd, flag);
},
getPointWindow(x, y) {
return dm.GetPointWindow(x, y);
},
getClientSize(hWnd) {
let width = new winax.Variant(-1, 'byref');
let height = new winax.Variant(-1, 'byref');
const ret = dm.GetClientSize(hWnd, width, height);
if (ret) {
return {
width: Number(width),
height: Number(height)
};
}
},
moveWindow(hWnd, x, y) {
return dm.MoveWindow(hWnd, x, y);
},
setWindowSize(hWnd, width, height) {
return dm.SetWindowSize(hWnd, width, height);
},
setWindowState(hWnd, state) {
return dm.SetWindowState(hWnd, state);
},
sendPaste(hWnd) {
return dm.sendPaste(hWnd);
},
sendString(hWnd, content) {
return dm.SendString(hWnd, content);
},
bindWindow(hWnd, display, mouse, keypad, mode) {
return dm.BindWindow(hWnd, display, mouse, keypad, mode);
},
unBindWindow() {
return dm.UnBindWindow();
},
capture(x1, y1, x2, y2, fileName) {
return dm.Capture(x1, y1, x2, y2, fileName);
},
findPic(x1, y1, x2, y2, picName, deltaColor, sim, dir) {
let x = new winax.Variant(-1, 'byref');
let y = new winax.Variant(-1, 'byref');
const index = dm.FindPic(x1, y1, x2, y2, picName, deltaColor, sim, dir, x, y);
if (index !== -1) {
return {
x: Number(x),
y: Number(y),
index
};
}
},
findPicEx(x1, y1, x2, y2, picName, deltaColor, sim, dir) {
const ret = dm.FindPicEx(x1, y1, x2, y2, picName, deltaColor, sim, dir);
if (ret.length > 0) {
return ret
.split('|')
.map((pic) => {
const [index, x, y] = pic.split(',');
return { index: Number(index), x: Number(x), y: Number(y) };
});
}
else
return [];
},
getColor(x, y) {
return dm.GetColor(x, y);
},
getColorNum(x1, y1, x2, y2, color, sim) {
return dm.GetColorNum(x1, y1, x2, y2, color, sim);
},
getAveRGB(x1, y1, x2, y2) {
return dm.GetAveRGB(x1, y1, x2, y2);
},
findColor(x1, y1, x2, y2, color, sim, dir) {
let x = new winax.Variant(-1, 'byref');
let y = new winax.Variant(-1, 'byref');
const ret = dm.FindColor(x1, y1, x2, y2, color, sim, dir, x, y);
if (ret) {
return {
x: Number(x),
y: Number(y)
};
}
},
getNowDict() {
return dm.GetNowDict();
},
setDict(index, file) {
return dm.SetDict(index, file);
},
findStr(x1, y1, x2, y2, str, colorFormat, sim) {
let x = new winax.Variant(-1, 'byref');
let y = new winax.Variant(-1, 'byref');
const index = dm.FindStr(x1, y1, x2, y2, str, colorFormat, sim, x, y);
if (index !== -1) {
return {
index,
x: Number(x),
y: Number(y)
};
}
},
ocr(x1, y1, x2, y2, colorFormat, sim) {
return dm.Ocr(x1, y1, x2, y2, colorFormat, sim);
},
getWords(x1, y1, x2, y2, colorFormat, sim) {
const words = dm.GetWords(x1, y1, x2, y2, colorFormat, sim);
if (words.length > 0) {
const info = words.split('|');
return {
x: Number(info[0]),
y: Number(info[1]),
words: info[2]
};
}
},
getScreenSize() {
return {
width: dm.GetScreenWidth(),
height: dm.GetScreenHeight()
};
}
};