Internet Explorer_Server
임베디드 컨트롤을 사용하는 공급 업체의 클라이언트 기반 응용 프로그램 용 기능 테스트 스크립트를 작성하고 있습니다. 나는 HTML을 읽고 정보를 확인할 수 있도록 객체를 가져 오는 데 어려움을 겪고 있습니다. 내부 컨트롤에 대한 핸들을 얻을 수 있고 oleacc.dll의 ObjectFromLresult 함수를 사용하여 개체를 가져 오려고합니다. 아아, 80020009로 인해 액세스가 거부되었습니다.oleacc.dll 오류 - 액세스 거부 오류 80020009
나는이 작업을 원하거나 적어도 그것이 왜 실패하고 있는지 정확히 알고 싶습니다. 여기 코드는 다음과 같습니다
DllCall("ole32.dll", "long", "CoInitialize", "ptr", 0)
Local $typUUID = DllStructCreate("int;short;short;byte[8]")
DllStructSetData($typUUID, 1, 0x626FC520)
DllStructSetData($typUUID, 2, 0xA41E)
DllStructSetData($typUUID, 3, 0x11CF)
DllStructSetData($typUUID, 4, 0xA7, 1)
DllStructSetData($typUUID, 4, 0x31, 2)
DllStructSetData($typUUID, 4, 0x0, 3)
DllStructSetData($typUUID, 4, 0xA0, 4)
DllStructSetData($typUUID, 4, 0xC9, 5)
DllStructSetData($typUUID, 4, 0x8, 6)
DllStructSetData($typUUID, 4, 0x26, 7)
DllStructSetData($typUUID, 4, 0x37, 8)
If IsDllStruct($typUUID) Then
ConsoleWrite("$typUUID is a DLL Struct." & @LF)
Else
ConsoleWrite("$typUUID is NOT a DLL Struct." & @LF)
EndIf
$lResult = 49263
Local $aRet = DllCall("oleacc.dll", _
"long", "ObjectFromLresult", _
"lresult", $lResult, _
"struct*", $typUUID, _
"wparam", 0, _
"idispatch*", 0)
If @error Then Return SetError(3, @error, 0)
If IsObj($aRet[4]) Then
ConsoleWrite("$aRet[4] is an object!" & @lf)
Local $oIE = $aRet[4] .Script()
; $oIE is now a valid IDispatch object
Return $oIE.Document.parentwindow
Else
Return SetError(1, $aRet[0], 0)
EndIf
일부 노트 :
* IsDllStruct 검사가 successfun와 $ typUUID는 DLL이 구조체는 것을보고합니다.
* $ lResult는 Internet Explorer_Server 내부/포함 된 컨트롤의 핸들입니다.
* 배열 위치 $ aRet [4]의 데이터는 개체입니다. Return $oIE.Document.parentwindow
_IEAttach()가 실패합니다. 따라서 루트 코드를 사용해야했습니다. – Colyn1337
올바른 창을 목표로 100 % 확신하십니까? _IEErrorHandlerRegister를 사용하여 실패한 이유를 확인하십시오. – Milos
예, 저는 있습니다. 그렇습니다. 문제의 제목에 오류가 있습니다. – Colyn1337