import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;

public class sample
{
    public static void main(String args[]) throws AWTException {

        Robot robot = new Robot();
        WindowElement StopTime = handler.findElementByAutomationID(Timer, "2049");
        handler.click(StopTime);
        handler.setfocus(StopTime);

        int StopTimeMinute = Minute + 8 ;
        String val = "";
        val = String.valueOf(StopTimeMinute);
        sendkeys(val);
    }

    public static void sendkeys(String text)
    {
        try {
            Robot robot = new Robot();
            String val = text.toUpperCase();
            for(int i=0;i<val.length();i++) {
                robot.keyPress(Character.getNumericValue(val.charAt(i)));
            }
        } catch(java.awt.AWTException exc) {
            System.out.println("error");
        }
    }
}


在上面的代码中,如果我尝试将变量发送到机械手按键事件方法,则会出现找不到源的错误。 => 89. Java机械手无法按键。谁能告诉我如何将变量传递给Robot.KeyPress(code)?

下面的代码有什么问题?
Robot.KeyPress(VK_SHIFT)工作正常,但是Robot.KeyPress(code)抛出以下错误。

WRobotPeer.keypress int(line) : not available [native method]
Source not found.


我什至尝试发送整数作为参数仍然是同样的问题。

public static void StopMinute(int StopMinute) throws AWTException{
    Robot robot = new Robot();
    robot.delay(20);
    robot.keyPress(StopMinute);
    robot.keyRelease(StopMinute);
}


谁能建议我这个。 Robot.KeyPress(代码)

最佳答案

Character上的方法getNumericValue()返回该字符的Unicode代码点。例如,Character.getNumericValue('A')返回10,而KeyEvent.VK_A返回ascii值65。后一个值用于AWT机械手,而不是第一个。

而不是遍历val.length(),而是执行val.toCharArray()并对其进行遍历。然后将(int)charArray[i]传递给robot keyPress。

关于java - Java Robot类的一些问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28213290/

10-13 01:16