Vb6 代码在IDE中工作,在exe中崩溃,错误为91“;对象变量未设置";

Vb6 代码在IDE中工作,在exe中崩溃,错误为91“;对象变量未设置";,vb6,webbrowser-control,Vb6,Webbrowser Control,这段代码在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 DoEve

这段代码在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

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


“Object Variable或With Block Variable Not Set”(对象变量或未设置块变量)是VB告诉您空引用的方式,位于WebBrowser.Document.All行(“UserId”)您有3个可能为空的独立对象。

您需要添加显示测试结果的msgboxes,其中显示哪些变量设置为空,或者写入文本文件,然后运行exe,查看哪些变量设置为空

这可能就像在最后一行之前等待一样简单。等待子例程如下所示

Public Sub Wait(T As Double)
    Dim StartTime As Double
    StartTime = Timer
    Do While Abs(Timer - StartTime) < T
    Loop
End Sub
公共子等待(T为双精度)
暗淡的开始时间是双倍的
开始时间=计时器
在Abs(计时器-启动时间)时执行
环
端接头
我会尝试1/10秒,然后向上爬。i、 e Wait.1如果您必须等待一秒钟或更长时间,请确保定期调用DoEvents以保持应用程序的响应


这是因为IDE总是使用PCODE,所以触摸速度比EXE慢。您可能还想尝试编译到PCODE,看看这是否会产生影响。

example.com用于类似的内容,我为您添加了它。Olafur我不明白您在说什么我的建议有效但不一致,但这是我的错。我搞砸了。在webbrowser的downloadcomplete事件中,我将Pagefinished变量设置为true,而不是documentcomplete变量。很抱歉正如您所说,这是一个时间问题,是由于我对webbrowser的downloadcomplete而不是documentcomplete事件的愚蠢反应造成的。对不起,信息不正确。