Node.js'de panoya kopyalamanın bir yolu var mı? Herhangi bir modül veya fikir var mı? Bir masaüstü uygulamasında Node.js kullanıyorum. Umarım bu, neden bunu başarabilmesini istediğimi açıklar.
Yanıtlar:
Bir pano, bir işletim sistemine özgü değildir. Bu, işletim sisteminin çalıştırdığı pencere sisteminin bir yapısıdır. Örneğin, bunun X üzerinde çalışmasını istiyorsanız, Xlib ve / veya XCB'ye bağlanmanız gerekir. Düğüm için Xlib bağlamaları aslında mevcuttur: https://github.com/mixu/nwm . Size X panosuna erişim izni verip vermediğinden emin olmasam da, kendinizinkini yazabilirsiniz. Windows için ayrı bağlamalara ihtiyacınız olacak.
düzenleme: Keskin bir şey yapmak istiyorsanız, xclip'i de kullanabilirsiniz:
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 için:
function pbcopy(data) {
var proc = require('child_process').spawn('pbcopy');
proc.stdin.write(data); proc.stdin.end();
}
write()
bir tampon veya dizge alabilir. Bir dizenin varsayılan kodlaması utf-8 olacaktır.
Kontrol edin clipboardy
. Çapraz platform kopyalamanıza / yapıştırmanıza izin verir. Başka bir cevapta bahsedilencopy-paste
modülden daha aktif bir şekilde korunur ve bu modülün sorunlarının çoğunu düzeltir.
const clipboardy = require('clipboardy');
// Copy
clipboardy.writeSync('🦄');
// Paste
clipboardy.readSync();
//🦄
çlipboardy
içinde npm yüklemesi yaptım. Web uygulamamda bir düğme var, bu düğmeye tıklandığında pano içeriğini almalı ama tanımsız veriyor, herhangi bir giriş çok takdir ediliyor stackoverflow.com/questions/61650737/…
İşte sağlayan copy
ve paste
işlev gören bir modül : https://github.com/xavi-/node-copy-paste
Ne zaman require("copy-paste").global()
yürütüldüğünde, iki küresel fonksiyonlar eklenir:
> copy("hello") // Asynchronously adds "hello" to clipbroad
> Copy complete
> paste() // Synchronously returns clipboard contents
'hello'
Bahsedilen diğer cevapların çoğu gibi, düğümü kopyalayıp yapıştırmak için harici bir programa başvurmanız gerekir. Durumda, (OSX için), (linux için) ve (Windows için) node-copy-paste
çağırır .pbcopy/pbpaste
xclip
clip
Bu modül, bir yan proje için REPL'de çok iş yaparken çok yardımcı oldu. Söylemeye gerek yok, copy-paste
sadece bir komut satırı aracıdır - bu olduğunu değil sunucu çalışmaları için geliyordu.
Windows'ta en kısa yol:
const util = require("util");
require('child_process').spawn('clip').stdin.end(util.inspect("content_for_the_clipboard"));
util
.
ReferenceError: util is not defined
ilk içermeden const util = require("util")
ben hem Electon main test edilmiş ve hiçbir şans ile süreci işlemek. 12.14.1 CLI düğümünden işe yaradığı söyleniyor. Kullanım durumuna göre faydayı güvenli tarafta tanımlamanız gerektiğini söyleyebilirim.
Bunu işleyen farklı bir uygulama oluşturarak başardım. Kesinlikle en iyi yol değil, ama işe yarıyor.
Windows kullanıyorum ve bir VB.NET uygulaması oluşturdum:
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
Daha sonra Node.js'de, child_process.exec
kopyalanacak veriler komut satırı argümanı olarak iletilerek VB.NET uygulamasını çalıştırırdım:
require('child_process').exec(
"CopyToClipboard.exe \"test foo bar\"",
function(err, stdout, stderr) {
console.log(stdout); // to confirm the application has been run
}
);
Mac, bu kullanım durumu için yerel bir komut satırına sahiptir 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 için aynı kod ancak Xclip ( ) pbcopy
ile değiştirinapt get install xclip
echo fooo | clip
. Şimdi, kullanıcıdan bir şey yüklemesini istemeden bunu Linux'ta nasıl elde edebilirim?
echo fooo | clip
işe yarayabilir, ancak sonuç ilk dizgenin sonunda bir '\ n' içerecek, bu benim beklentilerimin dışında.
bu sıfırlayıcı panoyu kontrol et
npm zeroclipboard yükle