gpt4 book ai didi

java - 如何控制 Windows 复制粘贴事件?

转载 作者:行者123 更新时间:2023-12-01 15:18:30 24 4
gpt4 key购买 nike

我需要用java制作一个文件复制器。

我想知道如何确认操作系统文件系统中发生的事件以及如何控制它。

最佳答案

使用以下代码编写一个连续执行剪贴板数据检查的线程

// If a string is on the system clipboard, this method returns it;
// otherwise it returns null.
public static String getClipboard() {
Transferable t = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);

try {
if (t != null && t.isDataFlavorSupported(DataFlavor.stringFlavor)) {
String text = (String)t.getTransferData(DataFlavor.stringFlavor);
return text;
}
} catch (UnsupportedFlavorException e) {
} catch (IOException e) {
}
return null;
}

// This method writes a string to the system clipboard.
// otherwise it returns null.
public static void setClipboard(String str) {
StringSelection ss = new StringSelection(str);
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null);
}

有关更多详细信息,请参阅下面的类(class)

 java.awt.datatransfer.Clipboard;
java.awt.datatransfer.ClipboardOwner;
java.awt.datatransfer.Transferable;
java.awt.datatransfer.StringSelection;
java.awt.datatransfer.DataFlavor;

下面是监听器示例

import java.awt.*;  
import java.awt.datatransfer.*;

class BoardListener extends Thread implements ClipboardOwner {
Clipboard sysClip = Toolkit.getDefaultToolkit().getSystemClipboard();

public void run() {
Transferable trans = sysClip.getContents(this);
regainOwnership(trans);
System.out.println("Listening to board...");
while(true) {}
}

public void lostOwnership(Clipboard c, Transferable t) {
Transferable contents = sysClip.getContents(this); //EXCEPTION
processContents(contents);
regainOwnership(contents);
}

void processContents(Transferable t) {
System.out.println("Processing: " + t);
}

void regainOwnership(Transferable t) {
sysClip.setContents(t, this);
}

public static void main(String[] args) {
BoardListener b = new BoardListener();
b.start();
}
}

关于java - 如何控制 Windows 复制粘贴事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11304621/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com