C'è un modo per copiare negli appunti in Node.js? Eventuali moduli o idee che cosa così mai? Sto usando Node.js su un'applicazione desktop. Spero che questo chiarisca perché voglio che sia in grado di raggiungere questo obiettivo.
Risposte:
Gli appunti non sono inerenti a un sistema operativo. È un costrutto di qualunque sistema a finestre il sistema operativo sia in esecuzione. Quindi, se vuoi che funzioni su X, ad esempio, avrai bisogno di collegamenti a Xlib e / o XCB. I collegamenti Xlib per il nodo esistono effettivamente: https://github.com/mixu/nwm . Anche se non sono sicuro che ti dia accesso agli appunti X, potresti finire per scriverne uno tuo. Avrai bisogno di associazioni separate per Windows.
modifica: se vuoi fare qualcosa di hacky, potresti anche usare 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);
});
Per OS X:
function pbcopy(data) {
var proc = require('child_process').spawn('pbcopy');
proc.stdin.write(data); proc.stdin.end();
}
write()
può richiedere un buffer o una stringa. La codifica predefinita per una stringa sarà utf-8.
Controlla clipboardy
. Ti consente di copiare / incollare multipiattaforma. È mantenuto più attivamente rispetto al copy-paste
modulo menzionato in un'altra risposta e risolve molti dei problemi di quel modulo.
const clipboardy = require('clipboardy');
// Copy
clipboardy.writeSync('🦄');
// Paste
clipboardy.readSync();
//🦄
çlipboardy
in cipresso, ho un pulsante nella mia applicazione web, facendo clic su quel pulsante dovrebbe ottenere il contenuto degli appunti ma dà undefined, eventuali input sono molto apprezzati stackoverflow.com/questions/61650737/…
Ecco un modulo che fornisce copy
e paste
funzioni: https://github.com/xavi-/node-copy-paste
Quando require("copy-paste").global()
viene eseguito, vengono aggiunte due funzioni globali:
> copy("hello") // Asynchronously adds "hello" to clipbroad
> Copy complete
> paste() // Synchronously returns clipboard contents
'hello'
Come molte delle altre risposte menzionate, per copiare e incollare nel nodo è necessario chiamare un programma esterno. Nel caso di node-copy-paste
, chiama pbcopy/pbpaste
(per OSX), xclip
(per linux) eclip
(per Windows).
Questo modulo è stato molto utile quando stavo lavorando molto in REPL per un progetto secondario. Inutile dire, copy-paste
è solo una linea di comando - è non pensato per il lavoro del server.
Modo più breve in Windows:
const util = require("util");
require('child_process').spawn('clip').stdin.end(util.inspect("content_for_the_clipboard"));
util
.
ReferenceError: util is not defined
senza prima aver incluso const util = require("util")
ho testato sia il processo principale che quello di rendering di Electon senza fortuna. Detto questo dal nodo 12.14.1 CLI ha funzionato. Penso che sia sicuro dire che dovresti definire util per essere al sicuro in base al caso d'uso.
Sono riuscito a farlo creando un'applicazione diversa che lo gestisca. Non è certamente il modo migliore, ma funziona.
Sono su Windows e ho creato un'applicazione 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
Quindi in Node.js, ho usato child_process.exec
per eseguire l'applicazione VB.NET, con i dati da copiare passati come argomento della riga di comando:
require('child_process').exec(
"CopyToClipboard.exe \"test foo bar\"",
function(err, stdout, stderr) {
console.log(stdout); // to confirm the application has been run
}
);
Il Mac ha una riga di comando nativa pbcopy
per questo caso d'uso:
require('child_process').exec(
'echo "test foo bar" | pbcopy',
function(err, stdout, stderr) {
console.log(stdout); // to confirm the application has been run
}
);
Stesso codice per Linux ma sostituito pbcopy
con Xclip ( apt get install xclip
)
echo fooo | clip
. Ora, come averlo in Linux senza chiedere all'utente di installare qualcosa?
echo fooo | clip
può funzionare, ma il risultato conterrà una "\ n" nell'ultima stringa primaria, è fuori dalle mie aspettative.
controlla questo zeroclipboard
npm installa zeroclipboard