我们不能使用在函数外部的函数中创建的COM对象吗?
strHTML := "<html><body>foobar</body></html>"
oNode := GetNode(strHTML, "body", 0)
msgbox % oNode.innerText
GetNode(strHTML, strNode, nIndex) {
doc := ComObjCreate("HTMLfile")
doc.write(strHTML)
return doc.getElementsByTagName(strNode)[nIndex]
}
错误:0x80070005 - 访问被拒绝。
具体来说:innerText
第#001行:strHTML:=“foobar”002:oNode := GetNode(strHTML,“body”,0) ---&GT; 003:MsgBox,oNode.innerText 005:{006:doc:= ComObjCreate(“HTMLfile”)007:doc.write(strHTML)008: 返回,doc.getElementsByTagName(strNode)[nIndex] 009:} 010:退出 011:退出
全局变量和byref参数都没有帮助。
@SouthStExit这不起作用,因此将它包装在函数中变得毫无意义。但正如Lexikos所提到的,我现在看到对象被破坏,因此无法访问。
oNode1 := GetNode("<html><body>foo</body></html>", "body", 0)
oNode2 := GetNode("<html><body><div>bar</div></body></html>", "div", 0)
msgbox % oNode1.innerText "`n" oNode2.innerText
GetNode(strHTML, strNode, nIndex) {
global doc
doc := ComObjCreate("HTMLfile")
doc.write(strHTML)
return doc.getElementsByTagName(strNode)[nIndex]
}
答案 0 :(得分:0)
您必须将 doc 设为全球。
strHTML := "<html><body>foobar</body></html>"
oNode := GetNode(strHTML, "body", 0)
msgbox % oNode.innerText
return
GetNode(strHTML, strNode, nIndex) {
global doc
doc := ComObjCreate("HTMLfile"), doc.write(strHTML)
return doc.getElementsByTagName(strNode)[nIndex]
}