我是Java编程的新手。我写了这个程序来粘贴" Hello world!"每一秒。该程序运行正常,文本粘贴在许多Windows程序,如记事本,Microsoft Word,浏览器和每个程序的textarea或输入框。但在某些程序中,我的代码并不适用于Windows End Task Manager或Garena room。
现在我的问题是:出于安全原因,某些程序是否会拒绝JAVA代码?如果真的如何在其中启用Java?
请注意,我使用NetBeans IDE编程和编译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());
}
}
}
请帮帮我。谢谢大家。
答案 0 :(得分:0)
Can some programs denies JAVA codes for security reasons?
无Java程序不知道任何Java程序。他们对Ctrl-V热键(通过操作系统)做出简单的反应,并将他们在系统剪贴板中找到的内容粘贴到他们的结构中。或者不是,那应该是你不会看到你的'#Hello Hello"串。
可能您没有看到粘贴的数据,他们也不会对手动Ctrl-V作出反应。
使用类生成输入事件与发布事件不同 事件所在的AWT事件队列或AWT组件 在平台的本机输入队列中生成。例如, Robot.mouseMove实际上会移动鼠标光标而不仅仅是 生成鼠标移动事件。
您生成的事件是否进入系统事件队列(应抛出异常)。似乎他们为某些人工作,而其他人则不然。但AFAIK 不是因为使用Java 来创建事件。