Рубрики
Без рубрики

Nodejs Desktop Automation с Robotjs (но с помощью программы, которая может заставить вас H̶i̶r̶e̶d̶ уволен))

Некоторое время назад я увидел видео о «дне в жизни инженера -программиста», где инженер … Tagged with Node, JavaScript, Beginters, Codenewbie.

Некоторое время назад я увидел видео мемов «День в жизни инженера -программиста», где инженер написал сценарий, чтобы автоматически включил свой компьютер, открыл мышь и с постоянным перемещением мыши, пока он спит Сделай это казаться онлайн и работает одновременно.

Мы будем писать аналогичную программу с Nodejs, используя Robotjs module Анкет Robotjs-это кроссплатформенная библиотека автоматизации настольных компьютеров.

Это только для образовательных целей. 😊

Шаги

  • Запустить NPM Установить Yargs Robotjs установить необходимые зависимости.
  • Создать app.js файл и вставьте код ниже. (Я объясню код):
// app.js
const yargs = require("yargs");
const { hideBin } = require("yargs/helpers");

const arg = yargs(hideBin(process.argv))
  .command("$0 [interval]", true, (yargs) => {
    yargs
      .positional("interval", {
        type: "number",
        describe: "the interval in second",
      })
      .default("interval", 60); // 60 seconds default
  })
  .usage("runs a desktop automator to run key your  mmouse move at interval")
  .example(
    "$0 -mk 3",
    "moves the mouse and press the keyboard after three seconds"
  )
  .option("m", {
    description: "enable the mouse",
    type: "boolean",
  })
  .option("k", {
    description: "enable the keyboard",
    type: "boolean",
  })
  .default("m", true)
  .help("h").argv;

Приведенный выше код настраивает параметры аргумента нашего приложения, а также определяет интерфейс CLI для описания приложения при запуске node app.js -h Анкет У нас будут параметры для запуска только нажатия клавиатуры ( -K ), перемещение мыши ( -m ) или оба ( -mk ) и определить интервалы времени событий за секунды. Я написал статью о аргументах CLI Nodejs. здесь.

  • Мы определим логические переменные, чтобы выяснить, какие операции выполнять:
let is_both;
let is_mouse;
let is_keyboard;
  • Далее мы определим функции для перемещения мыши и нажмите на клавиатуру
function moveMouseBackAndForth() {
    robot.moveMouseSmooth(200, 200);
  robot.moveMouseSmooth(400, 400);
}

function pressKeyBoard() {
  robot.keyTap("shift");
}
  • Затем мы будем называть функции в зависимости от принятых аргументов. Весь код будет выглядеть так:
const yargs = require("yargs");
const robot = require("robotjs");
const { hideBin } = require("yargs/helpers");

let is_both;
let is_mouse;
let is_keyboard;

const arg = yargs(hideBin(process.argv))
  .command("$0 [interval]", true, (yargs) => {
    yargs
      .positional("interval", {
        type: "number",
        describe: "the interval in second",
      })
      .default("interval", 60); // 60 seconds default
  })
  .usage("runs a desktop automator to run key your  mmouse move at interval")
  .example(
    "$0 -mk 3",
    "moves the mouse and press the keyboard after three seconds"
  )
  .option("m", {
    description: "enable the mouse",
    type: "boolean",
  })
  .option("k", {
    description: "enable the keyboard",
    type: "boolean",
  })
  .default("m", true)
  .help("h").argv;

let { m, k, interval } = arg;
// multiply seconds by 1000 to get milliseconds
interval = interval * 1000;

if (m && k) is_both = true;
else {
  if (m) is_mouse = true;
  else if (k) is_keyboard = true;
}

function moveMouseBackAndForth() {
  robot.moveMouseSmooth(200, 200);
  robot.moveMouseSmooth(400, 400);
}

function pressKeyBoard() {
  robot.keyTap("shift");
}

if (is_both) {
  setInterval(() => {
    moveMouseBackAndForth();
    pressKeyBoard();
  }, interval);
} else if (is_keyboard) setInterval(pressKeyBoard, interval);
else {
  setInterval(moveMouseBackAndForth, interval);
}
  • Запустить node app.js -m 3 Перемещать нашу мышь только с интервалом в 3 секунды.

Спасибо, что прочитали. Вы бы предпочли, чтобы программа сделала что -то еще, кроме нажатия клавиатуры?

Вы можете получить код из этого Github Gist

Я буду признателен за ваши отзывы и вопросы.

Оригинал: “https://dev.to/zt4ff_1/nodejs-desktop-automation-with-robotjs-but-with-a-program-that-could-get-you-hired-fired-fj”