0

このコードはIDEでうまく機能しますが、exeファイルに作成して同じマシンで実行すると、最後の行で毎回クラッシュします。なぜですか?

PageFinished = False
Cancelling = False
OKToUnload = False

WebBrowser.Navigate ("https://www.example.com/index.jsp")

Do While PageFinished = False  'set to true in document complete event
    DoEvents
    If Cancelling = True Then
        OKToUnload = True
        GoTo Endline
    End If
Loop
PageFinished = False
WebBrowser.Document.All("UserId").Value = txtNumber.Text 'error here
4

2 に答える 2

1

どの変数が NOTHING に設定されているかをテストした結果を示すメッセージ ボックスを追加するか、テキスト ファイルに書き込んで exe を実行し、何が何も設定されていないかを確認する必要があります。

最後の行の前に待機するのと同じくらい簡単かもしれません。Wait サブルーチンは次のようになります。

Public Sub Wait(T As Double)
    Dim StartTime As Double
    StartTime = Timer
    Do While Abs(Timer - StartTime) < T
    Loop
End Sub

私は 1/10 秒を試して、あなたのやり方で作業します。つまり、待機 .1 1 秒以上待機する必要がある場合は、定期的に DoEvents を呼び出して、アプリケーションの応答性を維持してください。

これは、IDE が常に PCODE を使用するため、EXE に準拠した EXE よりも少し遅いためです。PCODE へのコンパイルも試して、違いが生じるかどうかを確認してください。

于 2009-03-10T12:10:10.977 に答える
1

あなたのサンプル コードをもっと見ることなく、これは VB IDE によって「隠されている」タイミングの問題であると思います。.Value プロパティを設定する前に、WebBrowser.Document.All("UserId") をテストします。コードの非IDEバージョンがその時点に到達した時点では、おそらく利用できません(何もありません)。

「オブジェクト変数またはブロック変数が設定されていない」は、null 参照について伝える VB の方法であり、行 WebBrowser.Document.All("UserId") には、null になる可能性のある 3 つの個別のオブジェクトがあります。

于 2009-03-10T04:25:10.113 に答える