4

このクラスでファイルやプログラムを見つけることができるかどうか疑問に思っていました。マウス座標を使用したり、単純にアプリケーションを見つけて実行したりする方法があることは知っていますが、それは私がやりたいことではありません。

より明確な例は次のとおりです。たとえば、デスクトップに Google Chrome、Firefox、および Safari があり、それらをあちこちシャッフルするとします。「アプリケーションの実行」コマンドを使用せずに、探しているブラウザをマウスで見つけるにはどうすればよいですか。

それが明確になることを願っています!助けてくれてありがとう =)

4

3 に答える 3

1

最も簡単な方法 (私が知っているRobot. これをする:

探しているアイコンのスクリーンショットを撮り、ファイルに保存します (アイコンを保存するだけです) (.jpg ではありません。これはロスレスではないため、おそらく .bmp だけです)。

次に、次のようなことができます。

Robot robot = new Robot();
BufferedImage current = robot.createScreenCapture(
  new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));

static void getScreenStart()
{
  BufferedImage icon = ImageIO.read(new File("chromeIcon.bmp"));
  for (int x = 0; x < current.getWidth (); x++)
  for (int y = 0; y < current.getHeight(); y++)
  {
     boolean matches = true;
     for (int x2 = 0; x2 < icon.getWidth () && matches; x2++)
     for (int y2 = 0; y2 < icon.getHeight() && matches; y2++)
        if (icon.getRGB(x2, y2) != current.getRGB(x+x2, y+y2))
           matches = false;
     if (matches)
     {
        X_START = x;
        Y_START = y;
        return;
     }
  }
}

ただし、一般的には、可能な場合はこれを避けるようにしてください。

于 2013-02-19T16:56:49.823 に答える
0

いいえ、Robot クラスを使用してこれを簡単に達成できるとは思いません。これは、Java がクロス プラットフォーム言語であり、ネイティブ環境およびウィンドウ マネージャーに統合するために使用できるライブラリを使用できない/使用できないためです。

Java コードは、JDK を使用する任意のプラットフォームで実行する必要があり、これらの機能をすべての JDK に追加するのは非常に困難です。この機能を提供できる他のJavaライブラリを調べますが、ロボットはあなたが探しているものを提供しません.

Windows では、デスクトップ自動化用のスクリプト言語であり、非常に強力なAutoHotkeyの使用をお勧めします。IronAHKとして Mac OSX 用のポートもあります。

Java ライブラリに関しては、達成したい内容に応じて、TestCompleteSeleniumなどの GUI 自動テスト ソリューションを参照できます。Java 用のテスト自動化ツールを探してみてください。さらに多くのものを見つけることができます。

于 2013-02-19T16:43:35.253 に答える