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);
});
확인하십시오 clipboardy
. 플랫폼 간 복사 / 붙여 넣기를 할 수 있습니다. 다른 답변에서 언급 한copy-paste
모듈 보다 더 적극적으로 유지 관리되며 해당 모듈의 많은 문제를 해결합니다.
const clipboardy = require('clipboardy');
// Copy
clipboardy.writeSync('🦄');
// Paste
clipboardy.readSync();
//🦄
çlipboardy
했습니다. 웹 애플리케이션에 버튼이 있습니다. 버튼을 클릭하면 클립 보드 콘텐츠가 표시되지만 정의되지 않은 입력이 제공됩니다. stackoverflow.com/questions/61650737/…
다음은 제공 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'
언급 된 다른 많은 답변과 마찬가지로 노드에 복사하여 붙여 넣으려면 외부 프로그램을 호출해야합니다. 의 경우 (OSX의 경우), (Linux의 경우) 및 (Windows 의 경우)를 node-copy-paste
호출합니다 .pbcopy/pbpaste
xclip
clip
이 모듈은 제가 사이드 프로젝트를 위해 REPL에서 많은 작업을 할 때 매우 유용했습니다. 말할 필요도없이 copy-paste
명령 줄 유틸리티 일 뿐이며 서버 작업을위한 것이 아닙니다 .
Windows에서 가장 짧은 방법 :
const util = require("util");
require('child_process').spawn('clip').stdin.end(util.inspect("content_for_the_clipboard"));
util
먼저 요구해야합니다 .
ReferenceError: util is not defined
포함하여 먼저 얻었습니다 const util = require("util")
. 노드 12.14.1 CLI에서 작동했습니다. 유스 케이스에 따라 util이 안전한쪽에 있도록 정의해야한다고 말하는 것이 안전하다고 생각합니다.
나는 이것을 처리하는 다른 응용 프로그램을 만들어서 그렇게 할 수 있었다. 확실히 최선의 방법은 아니지만 작동합니다.
저는 Windows에 있고 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 응용 프로그램을 실행했습니다.
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
}
);
리눅스에 대한 동일 코드 만 교체 pbcopy
와 함께 XCLIP ( apt get install xclip
)
echo fooo | clip
.. 이제 사용자에게 무언가를 설치하도록 요청하지 않고 Linux에서 어떻게해야합니까?
echo fooo | clip
작동 할 수 있지만 결과는 원시 문자열의 마지막에 '\ n'을 포함합니다. 내 기대를 벗어났습니다.
이 zeroclipboard 확인
npm 설치 zeroclipboard