Java 如何使机器人类型a`:`?
我想使用Java Robot键入Java 如何使机器人类型a`:`?,java,awtrobot,Java,Awtrobot,我想使用Java Robot键入:。但是,我得到了一个非法argumentexception。我的代码是: robot.keyPress(KeyEvent.VK_SHIFT); robot.keyPress(KeyEvent.VK_COLON); robot.keyRelease(KeyEvent.VK_COLON); robot.keyRelease(KeyEvent.VK_SHIFT); 例外情况是: java.lang.IllegalArgumentException: Invalid
:
。但是,我得到了一个非法argumentexception
。我的代码是:
robot.keyPress(KeyEvent.VK_SHIFT);
robot.keyPress(KeyEvent.VK_COLON);
robot.keyRelease(KeyEvent.VK_COLON);
robot.keyRelease(KeyEvent.VK_SHIFT);
例外情况是:
java.lang.IllegalArgumentException: Invalid key code.].
我还尝试了:
robot.keyPress(KeyEvent.VK_SHIFT);
robot.keyPress(KeyEvent.VK_SEMICOLON);
robot.keyRelease(KeyEvent.VK_SEMICOLON);
robot.keyRelease(KeyEvent.VK_SHIFT);
我怎样才能解决这个问题呢?我不知道Java机器人,但是如果您使用的是shift,那么您不应该键入分号,因为shift+分号=冒号。所以这可能是非法参数,因为冒号不是键,分号是。请尝试以下代码:
robot.keyPress(KeyEvent.VK_SHIFT);
robot.keyPress(KeyEvent.VK_SEMICOLON);
robot.keyRelease(KeyEvent.VK_SEMICOLON);
robot.keyRelease(KeyEvent.VK_SHIFT);
与您输入的键盘一样:当您按下shift+;。同样的,你需要模拟
试着运行这段代码,试试上面的答案:
public class Test {
public static void main(String[] args) {
Robot robot;
try {
robot = new Robot();
robot.keyPress(KeyEvent.VK_SHIFT);
robot.keyPress(KeyEvent.VK_SEMICOLON);
robot.keyRelease(KeyEvent.VK_SEMICOLON);
robot.keyRelease(KeyEvent.VK_SHIFT);
} catch (AWTException e) {
// TODO Auto-generated catch bloc
e.printStackTrace();
}
}
}
不幸的是,Java
Robot
类依赖于一个称为Java.awt.peer.RobotPeer
的未记录接口的特定于平台的实现。特定于平台的实现决定哪些按键事件是合法的或非法的
在我的windows XP设备上,这可以正常工作:
public static void main(final String[] args) throws InterruptedException, IOException {
Robot robot;
try {
robot = new Robot();
robot.keyPress(KeyEvent.VK_SHIFT);
robot.keyPress(KeyEvent.VK_SEMICOLON);
robot.keyRelease(KeyEvent.VK_SEMICOLON);
robot.keyRelease(KeyEvent.VK_SHIFT);
} catch (final AWTException e) {
// TODO Auto-generated catch bloc
e.printStackTrace();
}
}
在不同的平台上,您可能需要尝试:
public static void main(final String[] args) throws InterruptedException, IOException {
Robot robot;
try {
robot = new Robot();
robot.keyPress(KeyEvent.VK_COLON);
robot.keyRelease(KeyEvent.VK_COLON);
} catch (final AWTException e) {
// TODO Auto-generated catch bloc
e.printStackTrace();
}
}
试试这个代码
请尝试以下代码;),可能会有帮助(使用ascii代码alt+5+8=:):
这似乎也与语言有关。在德国键盘上,结合使用
VK_SHIFT
和VK_PERIOD
有效。有人构建了一个KeyboardKeys类,并在SO中发布了它。它在。简而言之,他将每个字符都按Alt+数字组合输入 分号是一个“超级用例删除器”,也就是说,只有组合键才能得到它
移位+昏迷
试试这个:
robot=新机器人();
机器人按键(KeyEvent.VK_SHIFT);
robot.keyPress(KeyEvent.VK_逗号);
//由于按下Shift键,因此将生成分号。
robot.keyrease(KeyEvent.VK_逗号);
机器人。按键释放(按键事件。VK_移位);
我希望我帮了忙
祝你今天愉快。:) 结果是相同的:线程“main”java.lang.IllegalArgumentException中的异常:java.awt.Robot.keyPress(未知源)中sun.awt.windows.WRobotPeer.keyPress(本机方法)的键代码无效。问题是分号keypevent。如果我执行这段代码,我会得到同样的异常,但是在终止它之后,shift键“仍然被按下”。这段代码对你有用吗?@Eric在我的Windows XP框中,上面的代码工作正常。如果您仍然遇到错误,我会尝试在不使用
VK\u SHIFT
修饰符的情况下执行keyPress(KeyEvent.VK\u COLON)
。谢谢。该概念适用于:和\符号。因此,我可以在弹出式文件浏览器中键入文件位置。你帮我省了几个小时。谢谢。
case KeyEvent.VK_SEMICOLON:
if((event.getModifiers() & KeyEvent.KEY_PRESSED)!=0)
System.out.println(":");
else
System.out.print(";");
break;
robot9.delay(20);
robot9.keyPress(KeyEvent.VK_ALT);
robot9.delay(20);
robot9.keyPress(KeyEvent.VK_NUMPAD5);
robot9.keyRelease(KeyEvent.VK_NUMPAD5);
robot9.delay(20);
robot9.keyPress(KeyEvent.VK_NUMPAD8);
robot9.keyRelease(KeyEvent.VK_NUMPAD8);
robot9.delay(20);
robot9.keyRelease(KeyEvent.VK_ALT);
robot9.delay(20);