Войти

Показать полную графическую версию : [решено] ObjGet находит объект экселя, но не находит объект IE, почему?


evg64
15-08-2010, 11:49
Сабж, для иллюстрации маленький примерчик:
$oExcel = ObjGet("","Excel.Application")
$oIE = ObjGet("","InternetExplorer.Application")
msgbox(0,0,"IsObj($oExcel)=" & IsObj($oExcel) & @CRLF & "IsObj($oIE)=" & IsObj($oIE))

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

Iska
15-08-2010, 13:31
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»

evg64
21-08-2010, 14:22
Спасибо! Я разобрался :)




© OSzone.net 2001-2012