3

この特定の要件があります。ユーザーが GUI のボタンをクリックすると、ブラウザを起動する必要があります。2分間待つ必要があります。ユーザーが 2 分前にブラウザーを閉じた場合、ウィンドウ 'A' を起動する必要があります。ブラウザが 2 分以上開いたままになっている場合は、ウィンドウ 'B' を起動する必要があります。

現在、ブラウザウィンドウを起動できます。ただし、ユーザーが閉じると聞くことができません。以下は、私が書いたコードのスナップショットです。

String url = "www.google.com";
Process browserProcess;
String commandLine = "rundll32 url.dll,FileProtocolHandler " + url;
String[] args = commandLine.split(" ");
ProcessBuilder pb = new ProcessBuilder(args);
pb.redirectErrorStream(true);

browserProcess = pb.start();
in = new BufferedReader(new InputStreamReader(browserProcess.getErrorStream()));

String lineRead;
while ((lineRead = in.readLine()) != null) {
//do nothing
}

int exitVal;
System.out.println("Waiting...");
exitVal = browserProcess.waitFor();

System.out.println("Done");

現在、waitFor() はブラウザが起動されるとすぐに戻ります。ユーザーがブラウザ ウィンドウを閉じるまで待つ必要があります。どのようにそれを行うことができますか?

4

1 に答える 1

2

まず、 JavaSEに統合されていると思われるJDICをご覧ください。これで、2つの解決策があります。

  1. アプリケーションに統合されたブラウザを使用するか、ユーザーがハエが飛ぶのを2分間見ているかどうかを確認できます。この場合、例としてタイムカウンターを使用すると、どのフレームを開くかを簡単に確認できます。
  2. (おそらく正当な理由で)外部Webブラウザ(Opera、Chromium、K-meleon、名前を付けます)を使用することをお勧めします。次に、ユーザーがフレームを閉じたときを知るために、ターゲットWebサイトと通信する必要があります。実際、Javascriptは、ページ/タブが閉じられたことを確認し、独自のサーバーに「ユーザー1258がウィンドウを閉じた」というクエリを送信することができます。次に、クライアント/サーバー通信を使用して、サーバーはユーザーがウィンドウを見た時間をアプリケーションに通知する必要があります。はるかに複雑ですよね?
于 2011-01-12T15:04:39.440 に答える