Node.jsでクリップボードにコピーする方法はありますか?これまでに何かモジュールやアイデアはありますか?デスクトップアプリケーションでNode.jsを使用しています。うまくいけば、なぜこれを達成できるようにしたいのかが明らかになります。
クリップボードは、オペレーティングシステムに固有のものではありません。これは、オペレーティングシステムが実行されているウィンドウシステムの構成体です。したがって、たとえばXでこれを機能させるには、XlibやXCBへのバインディングが必要になります。ノードのXlibバインディングは実際に存在します: https://github.com/mixu/nwm 。 Xクリップボードにアクセスできるかどうかはわかりませんが、自分で作成することになるかもしれません。ウィンドウには個別のバインディングが必要です。
編集:何かハックしたい場合は、xclipを使用することもできます:
var exec = require('child_process').exec;
var getClipboard = function(func) {
exec('/usr/bin/xclip -o -selection clipboard', function(err, stdout, stderr) {
if (err || stderr) return func(err || new Error(stderr));
func(null, stdout);
});
};
getClipboard(function(err, text) {
if (err) throw err;
console.log(text);
});
OS Xの場合:
_function pbcopy(data) {
var proc = require('child_process').spawn('pbcopy');
proc.stdin.write(data); proc.stdin.end();
}
_
write()
は、バッファまたは文字列を取ることができます。文字列のデフォルトのエンコーディングはutf-8です。
clipboardy
を確認してください。クロスプラットフォームでコピー/貼り付けができます。別の答えのcopy-paste
モジュール 言及 よりも積極的に保守されており、そのモジュールの問題の多くを修正しています。
const clipboardy = require('clipboardy');
// Copy
clipboardy.writeSync('????');
// Paste
clipboardy.readSync();
//????
copy
およびpaste
関数を提供するモジュールは次のとおりです。 https://github.com/xavi-/node-copy-paste
require("copy-paste").global()
が実行されると、2つのグローバル関数が追加されます。
> copy("hello") // Asynchronously adds "hello" to clipbroad
> Copy complete
> paste() // Synchronously returns clipboard contents
'hello'
前述の他の多くの回答のように、ノードをコピーして貼り付けるには、外部プログラムを呼び出す必要があります。の場合 node-copy-paste
、 pbcopy/pbpaste
(OSXの場合)、 xclip
(Linuxの場合)、および clip
(Windowsの場合)。
このモジュールは、サイドプロジェクトでREPLで多くの作業を行っていたときに非常に役に立ちました。言うまでもなく、 copy-paste
はコマンドラインユーティリティにすぎません。notはサーバー作業用です。
Windowsでの最短の方法:
require('child_process').spawn('clip').stdin.end(util.inspect("content_for_the_clipboard"));
これを処理する別のアプリケーションを作成することで、なんとかしました。確かに最善の方法ではありませんが、機能します。
私はWindows上にいて、VB.NETアプリケーションを作成しました:
Module Module1
Sub Main()
Dim text = My.Application.CommandLineArgs(0)
My.Computer.Clipboard.SetText(text)
Console.Write(text) ' will appear on stdout
End Sub
End Module
次に、Node.jsでchild_process.exec
を使用してVB.NETアプリケーションを実行し、コピーするデータをコマンドライン引数として渡しました。
require('child_process').exec(
"CopyToClipboard.exe \"test foo bar\"",
function(err, stdout, stderr) {
console.log(stdout); // to confirm the application has been run
}
);
Macには、このユースケース用のネイティブコマンドラインpbcopy
があります。
require('child_process').exec(
'echo "test foo bar" | pbcopy',
function(err, stdout, stderr) {
console.log(stdout); // to confirm the application has been run
}
);
Linux用の同じコードですが、pbcopy
を Xclip (apt get install xclip
)