jiataifeng 发表于 2008-5-16 19:25:59

自动退出为哪般?

程序中有:$oQuerys = _IEFormElementGetCollection($Form)
当访问:$Query.name   时一般情况下不会出什么问题。
可是如果根本就没有"name"这个属性时,程序会自动退出。
这不是程序的问题,现在不想让它退出。
有没有一个判断的过程,即想要如下效果:
                if not func($Query.name) then
                        $a ="NOT Exist"
                        Else
                $a= $Query.name
endif
..............
请问有没有一个这样的过程func()?
谢谢

[ 本帖最后由 jiataifeng 于 2008-5-20 19:03 编辑 ]

asdf 发表于 2008-5-16 21:04:14

你可设定了Com error处理函数?

jiataifeng 发表于 2008-5-16 21:21:23

没有啊,怎么设定?

asdf 发表于 2008-5-16 21:24:49

= =……看帮助去吧,老大……:face (13):

jiataifeng 发表于 2008-5-16 21:31:29

好。
不过你懂就说一下嘛。

jiataifeng 发表于 2008-5-17 10:33:29

是用OPT设置吗,帮助里好像也没有啊。
错误处理我好像在哪里见过,只是想不起来了。

jiataifeng 发表于 2008-5-19 00:26:46

是这个吗,不过好像没反应啊。
Opt("RunErrorsFatal", 0)
好像是错的

asdf 发表于 2008-5-19 19:30:44

ObjEvent ( "AutoIt.Error" [, "函数名称"] )
这样就注册了一个com错误处理函数了……:face (13):
看帮助啊……

jiataifeng 发表于 2008-5-20 08:36:20

不行。
不借助com能行吗?
因为用到的某些方法com中好像没有。
_IEFormGetCollection($oIE)
_IEFormElementGetCollection($Form)
怎么用在coM中?

jiataifeng 发表于 2008-5-20 08:58:11

原帖由 jiataifeng 于 2008-5-20 08:36 发表 http://www.autoitx.com/images/common/back.gif
不行。
不借助com能行吗?
因为用到的某些方法com中好像没有。
_IEFormGetCollection($oIE)
_IEFormElementGetCollection($Form)
怎么用在coM中?


白说无用。请结合一楼看看下面的代码如何修改。
到第四个表单时因为访问了不存在的属性,自动退出。

#include <IE.au3>
#include <Array.au3>
Dim $FormArray
Dim $NFArray
Dim $fmaxlengthc
Dim $Qmaxlengthc;每个表单获取的元素的最大长度数
dim $formname ;存储表单名称
dim $j = 0

$oIE =_IECreate("http://news.sina.com.cn",1,1)
$oForms = _IEFormGetCollection($oIE)
For $Form In $oForms
        $formname[$j]=$Form.name
        $jtf=$j+1
        if @extended<>0 then
                $numbd=@extended
                EndIf
        TrayTip("表单信息","这个页面上共有" & $numbd & "个表单"&@CRLF&"第"&$jtf&"个表单的名字为:"&$Form.name,50)
        Sleep(2000)
        $i = 0
        $oQuerys = _IEFormElementGetCollection($Form)
        For $Query In $oQuerys
                ;MsgBox(0,"t", $Query.name)
       
                $FormArray[$i] = $Query.name
                $FormArray[$i] = $Query.type
                $FormArray[$i] = $Query.value
                $i += 1
        Next
       
        ReDim $FormArray[$i]
        $txt="表单控件信息"&$formname[$j]
        _ArrayDisplay($FormArray,$txt )
        ReDim $FormArray;不知道为什么要这样
        $j += 1
        Next















[ 本帖最后由 jiataifeng 于 2008-5-20 09:04 编辑 ]

asdf 发表于 2008-5-20 15:08:27

:face (32): 真无语,看说明啊= =!!!
既然已经使用了IEUDF,那么就这样注册错误处理:
_IEErrorHandlerRegister ( "ErrNotify" )

最最简单的错误处理函数:
Func ErrNotify()
        SetError(1)
EndFunc

jiataifeng 发表于 2008-5-20 19:01:52

楼上说的很对。谢谢
页: [1]
查看完整版本: 自动退出为哪般?