[решено] ObjGet находит объект экселя, но не находит объект IE, почему?

Ответить
Аватара пользователя
evg64

[решено] ObjGet находит объект экселя, но не находит объект IE, почему?

Сообщение evg64 »

Сабж, для иллюстрации маленький примерчик:



Код:

Код: Выделить всё

$oExcel = ObjGet("","Excel.Application")
$oIE = ObjGet("","InternetExplorer.Application")
msgbox(0,0,"IsObj($oExcel)=" & IsObj($oExcel) & @CRLF & "IsObj($oIE)=" & IsObj($oIE))

Разумеется, и книга экселя, и окна IE на момент исполнения скрипта запущены.
Аватара пользователя
Iska

Re: [решено] ObjGet находит объект экселя, но не находит объект IE, почему?

Сообщение Iska »

evg64, начиная с IE5, сие невозможно по причинам применяемой в IE модели безопасности. В принципе, можно попробовать пристыковаться к существующему экземпляру IE, перебрав коллекцию окон Проводника (на XP и IE6 такое работает):



Код:

Код: Выделить всё

AutoItSetOption("MustDeclareVars", 1)
Local $oShell = ObjCreate("Shell.Application")
Local $oShellWindows = $oShell.Windows
Local $i, $oWindow, $oIE
If $oShellWindows.Count > 0 Then
    For $i = 0 To $oShellWindows.Count - 1
        $oWindow = $oShellWindows.Item($i)
        ; Для отладки:
        ConsoleWriteError(($i + 1) & " [" & ObjName($oWindow.Application.Document) & "]" & @CRLF)
        If ObjName($oWindow.Application.Document) = "DispHTMLDocument" Then
            $oIE = $oWindow.Application
            ; После первого же найденного окна IE — выходим из цикла
            ExitLoop
        EndIf
    Next
    If IsObj($oIE) Then
        ConsoleWrite($oIE.Document.Title & " [" & $oIE.Document.URL & "]" & @CRLF)
    EndIf
EndIf
; …
Exit(0)


Результат…




Код:

Код: Выделить всё

Яндекс [http://www.ya.ru/]
1 [IShellFolderViewDual2]
2 [DispHTMLDocument]

На VBScript вместо «DispHTMLDocument» возвращается «HTMLDocument»
Ответить

Вернуться в «AutoIt»