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

在没有看到更多示例代码的情况下,我冒昧地猜测这是一个被 VB IDE“隐藏”的时间问题。在设置 .Value 属性之前测试 WebBrowser.Document.All("UserId")。在代码的非 IDE 版本达到这一点时,它可能不可用(无)。

“对象变量或未设置块变量”是 VB 告诉您空引用的方式,在 WebBrowser.Document.All("UserId") 行中,您有 3 个可能为空的单独对象。

于 2009-03-10T04:25:10.113 回答
1

您将需要添加显示测试结果的 msgboxes 哪些变量设置为 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 如果必须等待一秒钟或更长时间,请确保您定期调用 DoEvents 以保持您的应用程序响应。

原因是 IDE 总是使用 PCODE,所以它比 EXE 编译的 EXE 慢一点。您可能还想尝试编译为 PCODE,看看是否会有所不同。

于 2009-03-10T12:10:10.977 回答