4

AWT Robot を使用して Windows Explorer ウィンドウを移動しようとしています。ロボットは Java 7 で実行され、OS は Windows 7 です。

マウスを動かしてクリックすることはできますが、クリック アンド ドラッグしようとすると、ボタンをまったく押していないように見えます。何が問題なのか、または何が起こっているのかを理解する方法を考えることはできません。

私はSikuliを使い始めました:

mouse.mouseDown(InputEvent.BUTTON1_MASK);
mouse.drop(targetLocation);

それがうまくいかなかったとき、ロボットを直接操作して、低レベルの実装を試みました。

Robot robot = new Robot();
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseMove(targetLocation.getX(), targetLocation.getY());
robot.mouseRelease(InputEvent.BUTTON1_MASK);

マウスは正しい場所から始まり、正しい移動先に移動しますが、ボタンを押しているようには見えません。

4

4 に答える 4

4

sikuli では、mouse.drag() の次に mouse.drop() を使用します。例:

ScreenRegion fullScreenRegion=new ScreenRegion();
ImageTarget dragImageTarget=new ImageTarget("dragTargetFile");
ScreenRegion dragTargetRegion=fullScreenRegion.find(dragImageTarget);
ImageTarget dropImageTarget=new ImageTarget("dropTargetFile");
ScreenRegion dropTargetRegion=fullScreenRegion.find(dropImageTarget);

Mouse mouse = new DesktopMouse();
mouse.drag(dragTargetRegion.getCenter());
mouse.drop(dropTargetRegion.getCenter());

Java Robot API の場合: mouseMove()、mousePress()、mouseMove()、および mouseRelease() をこの順序で呼び出す必要があります。例:

Robot robot=new Robot();
// drag
robot.mouseMove(x1, y1);
robot.mousePress(InputEvent.BUTTON1_MASK);
// drop
robot.mouseMove(x2, y2);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
于 2013-06-11T18:27:43.860 に答える
1

同様の問題がありました。各ロボット操作の間に追加Thread.sleep(100);(または 100 以上) してみてください。

于 2013-07-04T08:38:18.347 に答える