有没有办法可以在Node.js中复制到剪贴板?任何模块或想法是什么?我在桌面应用程序上使用Node.js.希望能够清除为什么我希望它能够实现这一目标。
答案 0 :(得分:59)
对于OS X:
function pbcopy(data) {
var proc = require('child_process').spawn('pbcopy');
proc.stdin.write(data); proc.stdin.end();
}
write()
可以使用缓冲区或字符串。字符串的默认编码为utf-8。
答案 1 :(得分:34)
结帐clipboardy
。它允许您复制/粘贴跨平台。在另一个答案中,它比copy-paste
模块mentioned更积极地维护,它修复了该模块的许多问题。
const clipboardy = require('clipboardy');
// Copy
clipboardy.writeSync('');
// Paste
clipboardy.readSync();
//
答案 2 :(得分:29)
以下是提供copy
和paste
功能的模块:https://github.com/xavi-/node-copy-paste
执行require("copy-paste").global()
时,会添加两个全局函数:
> 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
只是一个命令行实用程序 - 不意味着服务器工作。
答案 3 :(得分:16)
剪贴板不是操作系统固有的。它是操作系统正在运行的任何窗口系统的构造。因此,如果您希望这在X上工作,则需要绑定到Xlib和/或XCB。节点的Xlib绑定实际存在:https://github.com/mixu/nwm。虽然我不确定它是否允许您访问X剪贴板,但您最终可能会编写自己的剪贴板。你需要单独的窗口绑定。
编辑:如果你想做一些hacky,你也可以使用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);
});
答案 4 :(得分:7)
Windows中最短的方式:
require('child_process').spawn('clip').stdin.end(util.inspect("content_for_the_clipboard"));
答案 5 :(得分:2)
我设法通过创建一个处理此问题的不同应用程序来实现。这肯定不是最好的方式,但它确实有效。
我在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
}
);
答案 6 :(得分:1)
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
)
答案 7 :(得分:-4)
npm install zeroclipboard