[java] Robotつかってペースト
2008/03/14
java
自動化
Javaです。
Robot使ってマウスを移動させて、プレスして、それから値をペーストです。
Windowsの外字入力をするのが面倒だったので、文字列を生成してクリップボードにコピーしてペーストしています。
kepressを続けておこなえば、同時押しのようになるのでctrl + vができるというわけなのですね。
えーと、注意しないといけないのは、マウスでpressしたら、release.
キーを入力したリリースするのを忘れないように。
GUIの開発でテストを自動化しようと思ったら、ショットカットキーをいろいろ用意しておいたほうがよさげですね。
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.InputEvent;
import java.awt.event.KeyEvent;
public class TestRobot_2 {
public static void main(String[] args) throws AWTException {
a();
}
/*
* 値を生成して、テキストフィールドがあるアプリケーションのマウスを移動させて、クリックして値をペーストしてみる。
*
*/
static void a() throws AWTException {
Robot robot = new Robot();
// 特定の文字列を生成
char base = 0xe520;// unicode
StringBuilder builder = new StringBuilder();
for (char i = base; i < 0xe5e0; i++) {
builder.append(i);
}
// クリップボードに値をコピー
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
StringSelection selection = new StringSelection(new String(builder));
clipboard.setContents(selection, null);
// ここの位置に入力するためのフィールドがあると考えてマウスを移動...
robot.mouseMove(-600, 400);
// 入力フィールドにマウスをプレス
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
robot.delay(300);
// ペースト
p(robot);
}
// ペーストします(ctrl + v)
static void p(Robot robot) {
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_V);
}
}
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
public class TestRobot_2 {
public static void main(String[] args) throws AWTException {
a();
}
/*
* 値を生成して、テキストフィールドがあるアプリケーションのマウスを移動させて、クリックして値をペーストしてみる。
*
*/
static void a() throws AWTException {
Robot robot = new Robot();
// 特定の文字列を生成
char base = 0xe520;// unicode
StringBuilder builder = new StringBuilder();
for (char i = base; i < 0xe5e0; i++) {
builder.append(i);
}
// クリップボードに値をコピー
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
StringSelection selection = new StringSelection(new String(builder));
clipboard.setContents(selection, null);
// ここの位置に入力するためのフィールドがあると考えてマウスを移動...
robot.mouseMove(-600, 400);
// 入力フィールドにマウスをプレス
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
robot.delay(300);
// ペースト
p(robot);
}
// ペーストします(ctrl + v)
static void p(Robot robot) {
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_V);
}
}
: