某些程序中的Java粘贴错误

时间:2015-06-28 14:41:05

标签: java netbeans copy-paste

我是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());
    }

  }

}

请帮帮我。谢谢大家。

1 个答案:

答案 0 :(得分:0)

Can some programs denies JAVA codes for security reasons?无Java程序不知道任何Java程序。他们对Ctrl-V热键(通过操作系统)做出简单的反应,并将他们在系统剪贴板中找到的内容粘贴到他们的结构中。或者不是,那应该是你不会看到你的'#Hello Hello"串。

可能您没有看到粘贴的数据,他们也不会对手动Ctrl-V作出反应。

Robot docs说:

  

使用类生成输入事件与发布事件不同   事件所在的AWT事件队列或AWT组件   在平台的本机输入队列中生成。例如,   Robot.mouseMove实际上会移动鼠标光标而不仅仅是   生成鼠标移动事件。

您生成的事件是否进入系统事件队列(应抛出异常)。似乎他们为某些人工作,而其他人则不然。但AFAIK 不是因为使用Java 来创建事件。