0

Webページからリンクを抽出しようとしていますが、webbrowserがナビゲートしていないようです。そのため、webbrowser1.readstate <> readystate_complete ...で無限ループが発生します...

ただし、webbrowser1.readstate <> readystate_complete でブレークポイントを作成すると、webbrowser はユーザーフォームで正常にナビゲートされ、コードは機能します....

何か案は?ありがとう

Do Until n = num

    WebBrowser1.Navigate URL

    Do While WebBrowser1.readyState <> READYSTATE_COMPLETE

    Loop


    If WebBrowser1.readyState = READYSTATE_COMPLETE Then
        'code
    end if

    n = n +1

loop
4

1 に答える 1

3

while質問と回答で使用するループは、何かが起こるのを待っている間、無駄に CPU サイクルを消費するビジー待機タイト ループですInternetExplorer後者は独自の別のプロセスで実行されるため、オブジェクトに対して(一種の)機能します。WebBrowserナビゲーションが機能するために必要な Windows メッセージをループがポンプしないため、インプロセスコントロールでは機能しません。ループ アプローチに固執する場合は、Sleep 250DoEvents呼び出しをループ内に配置して、ビジー状態の待機とポンプ メッセージを軽減することを検討してください。これはまだ推奨さWebBrowser_DocumentCompleteれません。代わりに、イベントを使用するようにコードをリファクタリングすることを検討する必要があります。

于 2013-09-26T04:08:11.130 に答える