1

問題:

Java Robot の MousePress() は 99% の確率で正常に動作しますが、Windows 8.1 または 10 のタスク マネージャーでは動作しません (7 以下はテストしていません)。

実際のところ、タスク マネージャ ウィンドウが選択されている場合は、MouseMove() でさえ失敗します。

複製するには:

  1. 以下のコードを使用し、一度実行してコードが機能することを確認します。
  2. タスク マネージャー (CTRL+Shift+Escape) を開き、コードを実行してから、タスク マネージャー ウィンドウをすばやく選択します。コードの実行は終了しますが、マウスの位置は変わりません。

コード:

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.MouseEvent;

public class RobotMousePressTest {

    public static void main(String[] args) throws AWTException, InterruptedException {
        System.out.println("Started. Waiting for sleep to finish.");
        Robot r = new Robot();
        Thread.sleep(3000);
        r.mouseMove(4, 4);
        r.mousePress(MouseEvent.getMaskForButton(MouseEvent.BUTTON1));
        System.out.println("Click!");
    }
}


質問:

  1. とにかくそれを機能させる方法があるかどうか誰かが知っていますか?
  2. MousePress() と MouseMove() に使用できる代替ライブラリはありますか?
  3. ネイティブ コード (JNI) を正しく動作させるために、ネイティブ コード (JNI) を使用する必要がありますか?
4

1 に答える 1