我有一个程序,它打开一个程序,然后它将一个字符串复制并粘贴到程序中,一段时间后,它使用带有ctrl + c的机器人将一个字符串从程序复制到剪贴板。然后我的程序检查复制的字符串是否包含单词,但不是检查最近复制的字符串,而是使用先前复制的字符串开头。下面是一些代码:
new ProcessBuilder("pathToProgram").start();
copy(STRING1);
paste();
Thread.sleep(x);
//Move mouse to a position
//robot uses ctrl+a
copy();
Thread.sleep(100);
clipboardData = (String) Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.stringFlavor);
system.out.println(clipboardData);
if(clipboardData.contains(String2){
//do some stuff
}
system.out事件只输出String1的值而不是值string2。谢谢你的帮助。
答案 0 :(得分:1)
假设你的copy()方法设置了剪贴板文本,我遇到了完全相同的问题,并找到了一个奇怪的解决方法。
https://spring.io/blog/2007/01/23/dynamic-datasource-routing/
我可以获取剪贴板文本,该文本将始终显示用户在那里复制的任何内容。但是,如果我以编程方式设置剪贴板文本,之后我将从剪贴板中获取所有内容 - 除非我推迟通过SwingUtilities.invokeLater()获取更多剪贴板文本,然后剪贴板文本再次正常工作。然后我可以再次打破它 - 并且"修复"再一次。
我不知道为什么会这样,所以我刚发布的问题(见链接)。