NodeJSモジュールがコンソールから呼び出されると、いくつかの紹介メッセージを出力し、ユーザー入力を待つ(Enterまたはescをクリックする)と想像してください。このモジュールには、-wait-for-user-inputプロンプトを除いて、必要なすべてのものがすでにあり、実行されています。それで、(私は個人的にNodeJSに非常に慣れていないので)コンソールモジュールをプログラムで実行し、入力イベントをトリガーして、すぐにジョブを待機して続行しないようにすることができるかどうか疑問に思います。
5 に答える
これには、おそらくRobotJSを使用できます。
コード例:
var robot = require("robotjs");
// Type user's password or something.
robot.typeString("abc123");
Jasonが述べたように、キーシミュレーションにRobotJSを使用できますが、Windowspaltform用のrobotJSを正しく構築するにはいくつかの手順が必要です。
- Windowsビルドツールが必要になるので実行します
npm install --global windows-build-tools
(約120MBなので時間がかかります) - 実行
npm install robotjs --save-dev
完了です!。
これがエレクトロンアプリ用の場合は、以下の3番目のステップも必要になります。 走る
npm rebuild --runtime=electron --target=1.7.9 --disturl=https://atom.io/download/atom-shell --abi=57
(1.7.9は私のもの
electron --version
で、abiは対応する8.7がインストールされているものです。ここnode --version
で、ノードバージョンのabiバージョンを確認できます[NODE_MODULE_VERSION列を探してください])
運用システムにキーを送信するだけでよい場合は、node-key-senderライブラリがRobotJの代わりになります。クロスプラットフォームで非常に小さなライブラリです。
でインストールしnpm install --save-dev node-key-sender
ます。
そして、以下を使用してキーボードに「Enter」を送信します。
var ks = require('node-key-sender');
ks.sendKey('enter');
ドキュメントページを確認してください:https ://www.npmjs.com/package/node-key-sender 。
@Venryxに返信します。特に最初にノードをロードする必要がある場合は、robotjsに遅延が発生することは間違いありませんが、すでにノードをロードしている場合は、試してみる価値があるかもしれません。
robot.setKeyboardDelay(0)
遅延のデフォルト設定は10msです。これは私を大いに助けました。
私は試しましrobotjs
たnode-key-sender
が、キーイベントごとにかなりの遅延/スタッターが発生します。(特に頻繁に送信する場合に目立ちます)
node-ffi-napi
これを解決するために、Windows user32SendInput
関数を直接呼び出す方法を見つけました: https ://stackoverflow.com/a/50412529/2441655
少なくとも私の場合、これにより大幅に優れたパフォーマンスが達成されました。(ただし、欠点は、もちろんWindowsでのみ機能することです)