none
WebBrowserでInvokeMember("click")した場合の「待ち」の処理 RRS feed

  • 質問

  • WebBrowserコントロールを使って、自動巡回的なアプリを作っています。
    言語はC#、環境は.NET 2.0です。

    読み込んだHTMLを解析してリンクをたどっていくような場合、Navigateしてから
    ドキュメントの読み込みが完了するまで待ってから解析を行う必要がありますが、
    私の場合以下のようなコードで対応しています。

    while (cBrowser.ReadyState != WebBrowserReadyState.Complete)
    {
    Application.DoEvents();
    }

    今回問題となっているのは、フォームのボタンを押したい場合はNavigateでは
    なく
    cBrowser.Document.All.GetElementsByName("input")[0].InvokeMember("click");

    のようにページの遷移を行っていますが、この場合上記の処理ではドキュメントの
    完了を待たずにループを抜けてしまいます。(実際にはInvokeMember("click")
    した直後にCompleteになっています)

    InvokeMember("click")した場合には、どのようにドキュメントの読み込み完了を
    待てばよいのでしょうか?
    2007年1月5日 14:28