首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Java中以编程方式粘贴后恢复剪贴板

在Java中以编程方式粘贴后恢复剪贴板
EN

Stack Overflow用户
提问于 2016-04-28 02:23:16
回答 1查看 390关注 0票数 0

我试图以编程的方式向系统剪贴板添加一些文本,然后将其粘贴到一个随机的应用程序中,然后将剪贴板恢复到以前的状态,但Java似乎在这方面存在问题。在十次尝试中,它粘贴文本的次数不会超过八次,有时甚至会粘贴错误的文本(之前在剪贴板中的文本)。

任何帮助都将不胜感激!

代码语言:javascript
复制
public class ClipboardTestClass {
    static Robot robot;

    public static void main(String[] args) {

        try {
            robot = new Robot();
        } catch (AWTException ex) {
            Logger.getLogger(TestApp.class.getName()).log(Level.SEVERE, null, ex);
        }
        try {
            Thread.sleep(2000);
        } catch (InterruptedException ex) {
            Logger.getLogger(TestApp.class.getName()).log(Level.SEVERE, null, ex);
        }
        for(int i = 0; i< 10; i++){
            enterString("Hello\n");
        }
    }

    public static void enterString(String myString){

        System.out.println("Trying to paste string \"" + myString + "\"");
        StringSelection stringSelection = new StringSelection(myString);
        //save clipboard content
        Transferable clipboardContent = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);
        //enter new clipboard content
        Toolkit.getDefaultToolkit().getSystemClipboard().setContents((Transferable) stringSelection, null);

        //paste clipboard content with Robot class
        robot.keyPress(VK_CONTROL);
        robot.keyPress(VK_V);
        robot.keyRelease(VK_CONTROL);
        robot.keyRelease(VK_V);

        //restore clipboard content
        Toolkit.getDefaultToolkit().getSystemClipboard().setContents(clipboardContent, null);
    }
}
EN

回答 1

Stack Overflow用户

发布于 2016-04-29 21:50:39

这永远不会可靠地工作。无论大小如何,您都必须处理所有格式。读一读延迟渲染(数据实际上并不存在于剪贴板上,直到有人请求粘贴它),你就会开始理解这个问题。一些应用程序,如Excel,可以提供25+格式的数据,其中一些非常大和复杂。没有时间或RAM来渲染它们。所以你不能把剪贴板还原成原来的样子。而且你根本不能更新剪贴板,否则会触发其他支持剪贴板的应用程序去做“他们的事情”。

最后,你不应该以这种方式使用剪贴板。剪贴板是为了方便用户而不是程序员而提供的共享资源。

找另一条路。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36897944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档