有没有一种方法可以在Node.js中复制到剪贴板?任何模块或想法都是如此吗?我在桌面应用程序上使用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);
});
我设法通过创建一个不同的应用程序来处理这个。这当然不是最好的方式,但它是有效的。
我在Windows和创建VB.NET应用程序:在Node.js的
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
然后,我用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
)
这里是一个模块,提供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
只是一个命令行实用程序 - 它是而不是意味着服务器工作。
这是最好的答案。它是跨平台的,它的工作方式应该是这样。 – gilly3
对于OS X:
function pbcopy(data) {
var proc = require('child_process').spawn('pbcopy');
proc.stdin.write(data); proc.stdin.end();
}
write()
可以采取缓冲剂或字符串。字符串的默认编码将是utf-8。
检查这个zeroclipboard
NPM安装zeroclipboard
这似乎是用于浏览器,而不是NodeJS桌面应用程序。 –
这也使用闪光灯,这似乎是一个坏主意。 – CallMeNorm
退房clipboardy
。它可以让你复制/粘贴跨平台。在另一个答案中,它比copy-paste
模块mentioned更积极地维护,它修复了该模块的许多问题。
const clipboardy = require('clipboardy');
// Copy
clipboardy.writeSync('');
// Paste
clipboardy.readSync('');
此模块完美工作,维护良好。 – SamVerschueren
它比“复制粘贴”模块更好,因为它也支持双字节字符。但是这与Windows 32位操作系统有关。 –
@PonmudiVN Windows 32位支持已修复:https://github.com/sindresorhus/clipboardy/commit/3be3ee6b9b9cd736623fcc8ebb1aa9e0c42371b4 –
- 1. 将文件复制到剪贴板Node.JS
- 2. Prism.js复制到剪贴板
- 3. Javascript复制到剪贴板
- 4. 复制Mathematica中的optput到剪贴板
- 5. 复制到vi中的剪贴板
- 6. Perl复制到剪贴板不能使用剪贴板模块
- 7. 复制到剪贴板中JS
- 8. 在C++中复制到剪贴板?
- 9. 在Android中复制到剪贴板
- 10. 的Javascript:复制到剪贴板的onkeydown
- 11. 复制到基本html的剪贴板
- 12. Android的Firefox webextension复制到剪贴板
- 13. 复制到没有System.Windows.Forms.Clipboard的剪贴板?
- 14. 复制的DefaultTableModel数据到剪贴板
- 15. ZeroClipboard - 复制到剪贴板的问题。
- 16. 复制的JTextPane文本到剪贴板
- 17. 复制到剪贴板的图像在粘贴时被剪裁
- 18. jQuery剪贴板复制
- 19. Javascript复制剪贴板
- 20. 将DataGridView内容复制到剪贴板
- 21. 将内容复制到剪贴板
- 22. 按钮复制文本到剪贴板
- 23. PyQT - 将文件复制到剪贴板
- 24. Sketch.js将画布复制到剪贴板
- 25. 将CMD输出复制到剪贴板
- 26. 复制到剪贴板经典asp
- 27. 将文本复制到剪贴板
- 28. ZeroClipBoard - 将文本复制到剪贴板
- 29. 复制到剪贴板使用Javascript
- 30. 剪贴板将对象复制到
您是否认为您可以直接在命令行中执行此操作?为此编写应用程序意味着我需要为Mac,Linux和Windows编译它。 – Tower
@rFactor:我完全没有使用Mac/Linux的经验,但我并不知道内置的剪贴板命令。 – pimvdb
在Windows上有一个'clip'命令,IIRC。 –