Eine Zwischenablage gehört nicht zu einem Betriebssystem. Es ist ein Konstrukt eines beliebigen Fenstersystems, auf dem das Betriebssystem gerade ausgeführt wird. Wenn Sie also möchten, dass dies beispielsweise auf X funktioniert, benötigen Sie Bindungen an Xlib und / oder XCB. Xlib-Bindungen für Knoten sind tatsächlich vorhanden: https://github.com/mixu/nwm . Obwohl ich nicht sicher bin, ob Sie damit auf die X-Zwischenablage zugreifen können, schreiben Sie möglicherweise Ihre eigene. Sie benötigen separate Bindungen für Fenster.
edit: Wenn du etwas Hackiges machen willst, kannst du auch xclip verwenden:
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);
});
Für OS X:
function pbcopy(data) { var proc = require('child_process').spawn('pbcopy'); proc.stdin.write(data); proc.stdin.end(); }
write()
kann einen Puffer oder eine Zeichenfolge nehmen. Die Standardcodierung für eine Zeichenfolge ist utf-8.quelle
Auschecken
clipboardy
. Sie können plattformübergreifend kopieren / einfügen. Es wird aktiver gewartet als das in einer anderen Antwort erwähntecopy-paste
Modul und behebt viele Probleme dieses Moduls.const clipboardy = require('clipboardy'); // Copy clipboardy.writeSync('🦄'); // Paste clipboardy.readSync(); //🦄
quelle
çlipboardy
in cypress.I haben, auf diese Schaltfläche auf Klick auf eine Schaltfläche in meiner Web - Anwendung sollte den Inhalt der Zwischenablage erhalten , aber es gibt nicht definiert, werden alle Eingaben sehr geschätzt stackoverflow.com/questions/61650737/...Hier ist ein Modul, das Folgendes bereitstellt
copy
undpaste
funktioniert: https://github.com/xavi-/node-copy-pasteBei der
require("copy-paste").global()
Ausführung werden zwei globale Funktionen hinzugefügt:> copy("hello") // Asynchronously adds "hello" to clipbroad > Copy complete > paste() // Synchronously returns clipboard contents 'hello'
Wie bei vielen anderen Antworten müssen Sie zum Kopieren und Einfügen in den Knoten ein externes Programm aufrufen. Im Fall von
node-copy-paste
ruft espbcopy/pbpaste
(für OSX),xclip
(für Linux) undclip
(für Windows) auf.Dieses Modul war sehr hilfreich, als ich viel in der REPL für ein Nebenprojekt gearbeitet habe. Es ist unnötig zu erwähnen, dass
copy-paste
es sich nur um ein Befehlszeilenprogramm handelt - es ist nicht für die Serverarbeit gedacht.quelle
Kürzester Weg in Windows:
const util = require("util"); require('child_process').spawn('clip').stdin.end(util.inspect("content_for_the_clipboard"));
quelle
util
erstmal verlangen .ReferenceError: util is not defined
ohne vorher eingeschlossen, dassconst util = require("util")
ich sowohl im Electon-Haupt- als auch im Render-Prozess ohne Glück getestet habe. Davon abgesehen hat es ab Knoten 12.14.1 CLI funktioniert. Ich denke, es ist sicher zu sagen, dass Sie util definieren sollten, um auf der sicheren Seite zu sein, basierend auf dem Anwendungsfall.Ich habe es geschafft, indem ich eine andere Anwendung erstellt habe, die dies handhabt. Es ist sicherlich nicht der beste Weg, aber es funktioniert.
Ich bin unter Windows und habe eine VB.NET-Anwendung erstellt:
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
Dann habe ich in Node.js
child_process.exec
die VB.NET-Anwendung ausgeführt, wobei die zu kopierenden Daten als Befehlszeilenargument übergeben wurden:require('child_process').exec( "CopyToClipboard.exe \"test foo bar\"", function(err, stdout, stderr) { console.log(stdout); // to confirm the application has been run } );
quelle
Mac hat eine native Befehlszeile
pbcopy
für diesen Anwendungsfall:require('child_process').exec( 'echo "test foo bar" | pbcopy', function(err, stdout, stderr) { console.log(stdout); // to confirm the application has been run } );
Gleicher Code für Linux aber ersetzen
pbcopy
mit xclip (apt get install xclip
)quelle
echo fooo | clip
. Wie kann man dies unter Linux haben, ohne den Benutzer zu bitten, etwas zu installieren?echo fooo | clip
kann funktionieren, aber das Ergebnis enthält ein '\ n' am Ende der ursprünglichen Zeichenfolge. Es liegt außerhalb meiner Erwartungen.Überprüfen Sie diese Nullplatine
quelle