java+robot输入_机器人类java,输入字符串问题

keyPress / Release方法需要一个int值,表示要键入的字符.这些值是由KeyEvent.VK _ ???确定的每个字符的关键代码.变量.

尝试:

import java.awt.*;

import java.util.*;

import java.lang.reflect.Field;

import java.awt.event.*;

import javax.swing.*;

public class RobotCharacter

{

public static void main(String[] args)

throws Exception

{

JTextField textField = new JTextField(10);

JFrame frame = new JFrame();

frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

frame.add( textField );

frame.pack();

frame.setLocationRelativeTo( null );

frame.setVisible( true );

Robot robot = new Robot();

typeCharacter(robot, "a");

typeCharacter(robot, "b");

typeCharacter(robot, "C");

typeCharacter(robot, "D");

}

public static void typeCharacter(Robot robot, String letter)

{

try

{

boolean upperCase = Character.isUpperCase( letter.charAt(0) );

String variableName = "VK_" + letter.toUpperCase();

Class clazz = KeyEvent.class;

Field field = clazz.getField( variableName );

int keyCode = field.getInt(null);

robot.delay(1000);

if (upperCase) robot.keyPress( KeyEvent.VK_SHIFT );

robot.keyPress( keyCode );

robot.keyRelease( keyCode );

if (upperCase) robot.keyRelease( KeyEvent.VK_SHIFT );

}

catch(Exception e)

{

System.out.println(e);

}

}

}

但是,即使这样也不适用于所有角色.例如,在我的键盘上,“%”高于“5”.您不能使用VK_PERCENT.所需的关键行程是VK_5以及换档.无法知道键盘的实际映射以自动执行此操作.

所以机器人不是一个很好的方法.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Java的AWT Robot来实现将字符串输入到Windows光标所在的输入框。 首先,需要使用RobotkeyPress和keyRelease方法模拟按下和释放键盘上的按键,例如“Shift”、“Ctrl”、“Alt”等特殊键以及要输入的文本中的每个字符。 然后,需要使用Robot的mouseMove和mousePress方法将鼠标移动到输入框的位置并单击它,以确保光标在输入框中。 最后,使用Robot的paste方法将要输入的字符串粘贴到光标所在的输入框中。 下面是一个简单的示例代码,演示了如何使用Robot将字符串输入到Windows光标所在的输入框: ```java import java.awt.Robot; import java.awt.event.KeyEvent; public class InputText { public static void main(String[] args) throws Exception { String text = "Hello, world!"; // Create a new Robot Robot robot = new Robot(); // Simulate typing the text for (int i = 0; i < text.length(); i++) { char c = text.charAt(i); if (Character.isUpperCase(c)) { robot.keyPress(KeyEvent.VK_SHIFT); } robot.keyPress(Character.toUpperCase(c)); robot.keyRelease(Character.toUpperCase(c)); if (Character.isUpperCase(c)) { robot.keyRelease(KeyEvent.VK_SHIFT); } } // Move the mouse to the input box and click it robot.mouseMove(100, 100); // Replace with the coordinates of the input box robot.mousePress(KeyEvent.BUTTON1_DOWN_MASK); robot.mouseRelease(KeyEvent.BUTTON1_DOWN_MASK); // Paste the text robot.keyPress(KeyEvent.VK_CONTROL); robot.keyPress(KeyEvent.VK_V); robot.keyRelease(KeyEvent.VK_V); robot.keyRelease(KeyEvent.VK_CONTROL); } } ``` 请注意,此代码假定输入框已经在屏幕上可见,并且鼠标已经在其上方。如果输入框不在屏幕上或光标不在其中,则需要使用其他技术将其定位。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值