我是Java编程新手。我写这个程序是为了每秒钟粘贴一次"你好,世界!"。该程序运行正常,文本粘贴在许多窗口程序中,如记事本、Microsoft Word、浏览器和每个程序的文本区域或输入框。但在一些程序中,我的代码不起作用,例如Windows End Task Manager或Garena room。
现在我的问题是:一些程序是否可以出于安全原因拒绝JAVA代码?如果这是真的,如何在其中启用Java?
请注意,我使用NetBeansIDE来编程和编译jar文件。我的代码如下:
package com.javacodegeeks.snippets.desktop;
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.awt.event.KeyEvent;
public class SimulateMouseMoveAndKeyPress {
public static void main(String[] args) throws InterruptedException {
try {
// Create counter
int counter = 0;
while(true) {
Thread.sleep(1000);
String myString = "[" + counter + "] Hello world!";
StringSelection stringSelection = new StringSelection (myString);
Clipboard clpbrd = Toolkit.getDefaultToolkit ().getSystemClipboard ();
clpbrd.setContents (stringSelection, null);
Robot r = new Robot();
r.keyPress(KeyEvent.VK_CONTROL);
r.keyPress(KeyEvent.VK_V);
r.keyRelease(KeyEvent.VK_CONTROL);
r.keyRelease(KeyEvent.VK_V);
r.keyPress(KeyEvent.VK_ENTER);
r.keyRelease(KeyEvent.VK_ENTER);
counter = (counter)+1;
}
} catch (AWTException e) {
System.out.println("Low level input control is not allowed " + e.getMessage());
}
}
}
请帮帮我。谢谢大家。
Can some programs denies JAVA codes for security reasons?
无Java程序不知道任何Java程序。他们只需对Ctrl-V热键(通过操作系统)做出反应,并将在系统剪贴板中找到的内容粘贴到其结构中。或者不是,在这种情况下,你不会看到你的"你好世界"字符串。
可能在您看不到粘贴数据的地方,它们也不会对手动Ctrl-V做出反应。
机器人医生说:
使用类生成输入事件与发布事件不同到AWT事件队列或AWT组件,因为事件是在平台的本机输入队列中生成。例如Robot.mouseMove实际上会移动鼠标光标,而不是生成鼠标移动事件。
您生成的事件是否进入系统事件队列(应该抛出异常)。似乎它们为一些人工作,而另一些人则不然。但是的AFAIK并不是因为使用Java来创建事件。