使用java.awt.Robot键入字符串
我已经知道如何使用使用java.awt.Robot键入字符串,java,swing,awtrobot,Java,Swing,Awtrobot,我已经知道如何使用java.awt.Robot使用keyPress键入单个字符,如下所示。我怎样才能一次将预定义的字符串值输入到文本框中 robot.keyPress(KeyEvent.VK_1); robot.keyPress(KeyEvent.VK_1); robot.keyPress(KeyEvent.VK_1); // instead, enter String x = "111" 常见的解决方案是使用剪贴板: String text = "Hello World"; String
java.awt.Robot
使用keyPress
键入单个字符,如下所示。我怎样才能一次将预定义的字符串值输入到文本框中
robot.keyPress(KeyEvent.VK_1);
robot.keyPress(KeyEvent.VK_1);
robot.keyPress(KeyEvent.VK_1);
// instead, enter String x = "111"
常见的解决方案是使用剪贴板:
String text = "Hello World";
StringSelection stringSelection = new StringSelection(text);
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(stringSelection, stringSelection);
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
你需要“键入”角色,这是一个新闻发布动作
robot.keyPress(KeyEvent.VK_1);
robot.keyRelease(KeyEvent.VK_1);
现在你可以复制粘贴三次,但我只是把它放在一个循环中,你可以在一个字符串中输入值,然后你可以使用这个字符串,就像Eng.Fouad解释的那样。但是使用它没有乐趣,你可以试试这个
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_H);
robot.keyRelease(KeyEvent.VK_H);
robot.keyPress(KeyEvent.VK_E);
robot.keyRelease(KeyEvent.VK_E);
robot.keyPress(KeyEvent.VK_L);
robot.keyRelease(KeyEvent.VK_L);
robot.keyPress(KeyEvent.VK_L);
robot.keyRelease(KeyEvent.VK_L);
robot.keyPress(KeyEvent.VK_O);
robot.keyRelease(KeyEvent.VK_O);
您还可以使用Thread.sleep,这样它就可以缓慢地输入数据位。我认为我已经实现了更好的解决方案,可能有人发现它很有用(主要的方法是从enum KeyCode读取所有值,然后将其放入HashMap,稍后再使用它来查找int key代码)
最后,您可以这样使用它(对于单个字符)robot.keyPress(charToKey('a').getKeyCode())代码>
如果要按大写字母,则必须同时按住shift键并释放,因为Java 7还可以使用KeyEvent.getExtendedKeyCodeForChar(c)。仅小写的示例可以是:
void sendKeys(Robot robot, String keys) {
for (char c : keys.toCharArray()) {
int keyCode = KeyEvent.getExtendedKeyCodeForChar(c);
if (KeyEvent.CHAR_UNDEFINED == keyCode) {
throw new RuntimeException(
"Key code not found for character '" + c + "'");
}
robot.keyPress(keyCode);
robot.delay(100);
robot.keyRelease(keyCode);
robot.delay(100);
}
}
这不会键入整个“字符串”,但有助于一次键入除一个字符以外的任何字符
Runtime.getRuntime().exec("notepad.exe");//or anywhere you want.
Thread.sleep(5000);//not required though gives a good feel.
Robot r=new Robot();
String a="Hi My name is Whatever you want to say.";
char c;
int d=a.length(),e=0,f=0;
while(e<=d)
{
c=a.charAt(e);
f=(int) c; //converts character to Unicode.
r.keyPress(KeyEvent.getExtendedKeyCodeForChar(f));
e++;
Thread.sleep(150);
}
Runtime.getRuntime().exec(“notepad.exe”)//或者你想去的任何地方。
睡眠(5000)//虽然不是必需的,但感觉很好。
机器人r=新机器人();
String a=“嗨,我的名字就是你们想说的。”;
字符c;
int d=a.length(),e=0,f=0;
while(e111)只是一个例子。假设我想让它输入“Hello world”
!谢谢。大写可以很容易地用字符进行检查。isUpperCase(c)
。我在这里如何处理大写?在什么地方按VK_SHIFT键?你能帮我吗?我想发送一个有大写字母、小字符和特殊字符的字符串。。
void sendKeys(Robot robot, String keys) {
for (char c : keys.toCharArray()) {
int keyCode = KeyEvent.getExtendedKeyCodeForChar(c);
if (KeyEvent.CHAR_UNDEFINED == keyCode) {
throw new RuntimeException(
"Key code not found for character '" + c + "'");
}
robot.keyPress(keyCode);
robot.delay(100);
robot.keyRelease(keyCode);
robot.delay(100);
}
}
Runtime.getRuntime().exec("notepad.exe");//or anywhere you want.
Thread.sleep(5000);//not required though gives a good feel.
Robot r=new Robot();
String a="Hi My name is Whatever you want to say.";
char c;
int d=a.length(),e=0,f=0;
while(e<=d)
{
c=a.charAt(e);
f=(int) c; //converts character to Unicode.
r.keyPress(KeyEvent.getExtendedKeyCodeForChar(f));
e++;
Thread.sleep(150);
}
StringSelection path = new StringSelection("path of your document ");
// create an object to desktop
Toolkit tol = Toolkit.getDefaultToolkit();
// get control of mouse cursor
Clipboard c = tol.getSystemClipboard();
// copy the path into mouse
c.setContents(path, null);
// create a object of robot class
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);
}