2011-09-13 12 views
1

私は今、実際のサーフィンウェブをシミュレートする簡単なプログラムを書いています。しかし、画面上にポップアップやプログラムのポップアップがある場合は、間違ったプログラムとのやりとりを防ぐために、最小化または閉じる必要があります。だから、実行中のプロセスを監視したり、新しいプロセスを検出したりする必要がありますか?私はJavascriptを使ってみましたが、IEではActiveXが必要で、かなり問題があります。誰かがコードのその部分を書いて始める方法について親切に私にアドバイスできますか?私はちょっとグーグルで、それはそれらのプロセスwindow.opener.close()またはProcess.Destroy()コマンドを言う。ありがとう。以下は私のコードの簡単な草案です。Java Killing Popup Process

package javaapplication1; 
import java.util.Random; 

public class JavaApplication1 
{ 
    public static void main(String[] args) 
    { 
     try 
     { 
      Random rand = new Random(); 
      int n = 1 + rand.nextInt(3); 
      if (n == 1) 
      { 
       String myURL = "www.facebook.com"; 
       java.awt.Desktop myNewBrowserDesktop = java.awt.Desktop.getDesktop(); 
       java.net.URI myNewLocation = new java.net.URI(myURL); 
       myNewBrowserDesktop.browse(myNewLocation); 
      } 
      if (n == 2) 
      { 
       String myURL = "www.google.com"; 
       java.awt.Desktop myNewBrowserDesktop = java.awt.Desktop.getDesktop(); 
       java.net.URI myNewLocation = new java.net.URI(myURL); 
       myNewBrowserDesktop.browse(myNewLocation); 
      } 
      if (n == 3) 
      { 
       String myURL = "www.yahoo.com"; 
       java.awt.Desktop myNewBrowserDesktop = java.awt.Desktop.getDesktop(); 
       java.net.URI myNewLocation = new java.net.URI(myURL); 
       myNewBrowserDesktop.browse(myNewLocation); 
      } 
     } 
     catch(Exception e) 
     { 
     } 
    } 
} 

答えて

0

これはできません。 Desktop.browseLaunches the default browser to display the URI。ブラウザが表示するドキュメント(html)の内容により、ブラウザで新しいウィンドウを開くか、ブラウザでそのURIを手動で参照するときにブラウザが行う可能性があります。

ほとんどの場合、ブラウザは新しいプロセスを作成しません。新しいプロセスを作成するか、またはウィンドウのみを作成するかにかかわらず、呼び出しプログラムに通知を提供しません。あなたの呼び出しプログラムは、それらのウィンドウを制御する方法がありません。

埋め込みブラウザを使用すると、このようなことを行うことができます。

+0

ありがとう、私はいつも "前面に持ってくる"とすべての可能なポップアッププログラムをオーバーライドし、Javaの無限ループの中に置く(私の場合はIE8)iexplore.exeプロセスを作成しようとすると? –

+0

どのように "可能なすべてのポップアッププログラムをベライド"しますか?この無限ループには何が必要ですか? –

+0

シミュレーションWebサーフィンセッションは長い間行われるので、ポップアッププログラムがブラウザに干渉しないように、私は無限ループを使用して継続的にチェックする必要があります。 –