在Node.js中复制到剪贴板?
有没有办法可以在Node.js中复制到剪贴板? 任何模块或想法是如此之久? 我在桌面应用程序上使用Node.js。 希望这清楚了为什么我希望它能够实现这一点。
剪贴板不是操作系统固有的。 它是操作系统正在运行的任何窗口系统的构造。 所以,如果你想这个在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); });
对于OS X:
function pbcopy(data) { var proc = require('child_process').spawn('pbcopy'); proc.stdin.write(data); proc.stdin.end(); }
write()
可以带一个缓冲区或一个string。 string的默认编码将是utf-8。
这是一个提供copy
和paste
function的模块: 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
只是一个命令行实用程序 – 它不适用于服务器工作。
签出clipboardy
。 它可以让你复制/粘贴跨平台。 它比另一个答案中提到的copy-paste
模块更为积极的维护,它修复了许多模块的问题。
const clipboardy = require('clipboardy'); // Copy clipboardy.writeSync('🦄'); // Paste clipboardy.readSync('🦄');
在Windows中最短的方式:
require('child_process').spawn('clip').stdin.end(util.inspect("content_for_the_clipboard"));
我设法通过创build一个不同的应用程序来处理这个。 这当然不是最好的方法,但它的工作原理。
我在Windows上创build了一个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应用程序,将要复制的数据作为命令行parameter passing:
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
replacepbcopy ( apt get install xclip
)
检查这个zeroclipboard
npm安装zeroclipboard