1

コンソールアプリからFirefoxを開き、それを使って何かを行い、数分後にシャットダウンする必要があります。

Process.Start( "firefox.exe"、 "myurl");を使用しています。Firefoxを開くことは問題ではありません。問題はそれを閉じることです。

CloseMainWindow()関数は通常は機能しますが、Firefoxでモーダルウィンドウが開いている場合(「ダウンロードに失敗しました」メッセージボックスなど)は機能しません。この場合、プロセスでKill()を呼び出すことができますが、これはダーティのようです。

また、プロセスでKill()を呼び出すと、次にFirefoxを開いたときに、「セッションの復元」タブが開きますが、これはクールではありません。セッション復元機能を無効にしようとすると、その問題を回避できます。ただし、そのようにffxを強制終了すると、他の問題が発生する可能性があることを懸念しています。

誰かがこれを行う良い方法を知っていますか?モーダルウィンドウハンドルを取得するためにピンボークして、それを閉じてからCloseMainWindow()を再試行する「最もクリーンな」方法ですか?

4

3 に答える 3

4

多分ワティンはあなたを助けることができます

public void SearchForWatiNOnGoogle()
{
    using (var browser = new Firefox("http://www.google.com"))
    {
        browser.TextField(Find.ByName("q")).TypeText("WatiN");
        browser.Button(Find.ByName("btnG")).Click();
        browser.Close();

     }
  }
于 2010-07-30T18:00:19.213 に答える
0

AutoItにはAutoItXと呼ばれるCOMライブラリがあり、ウィンドウを閉じるなど、他のプロセスからのウィンドウの操作を簡単かつ確実に処理するのに役立ちます...

これは主にスクリプト言語であるため、.NetからCOMを使用することに満足できない場合は、AutoItスクリプトをEXEにコンパイルして、.Netアプリケーションから実行することもできます。

http://www.autoitscript.com/

于 2010-07-30T18:30:23.663 に答える