Что нового

Не получается записать HTML код открытого окна IE с использованием _IEAttach

PACHOM

Новичок
Сообщения
99
Репутация
0
Здравствуйте!

Не могу понять, по какой причине не работает данный код. Пожалуйста помогите разобраться.

Код:
#include <IE.au3>
#RequireAdmin

Opt("WinTitleMatchMode", 4)

HotKeySet("{ESC}", "Terminate")

Func Terminate()
	Exit 0
EndFunc

;~ $sIE = _IECreate(@ScriptDir & '\test.html')

$sIE = WinWait("test", "", 2)
If Not $sIE Then
    MsgBox(16+4096, 'Сообщение', 'Окно не найдено, завершаем работу скрипта.')
    Exit
EndIf

WinActivate($sIE) ;заход в окно програмы

$sIE = _IEAttach($sIE, "Embedded")
MsgBox(4096, "The Embedded", _IEPropertyGet($sIE, "Embedded"))
$oFrame = _IEFrameGetObjByName($sIE, "IEFrame")
$sHTML = _IEDocReadHTML($oFrame)

;~ MsgBox(4096, "Document Source", $sHTML)

$f = FileOpen(@ScriptDir & "\HTMLText.txt", 2)
FileWrite($f, $sHTML)
FileClose($f)
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
PACHOM,
Попробуйте примерно так.
Код:
#include <IE.au3>

_IECreate(@ScriptDir & '\test.html')

$hIE = WinWait('[Class:IEFrame]', '', 2)
If Not $hIE Then
	MsgBox(16 + 4096, 'Сообщение', 'Окно не найдено, завершаем работу скрипта.')
	Exit 13
EndIf

$oIE = _IEAttach($hIE, 'HWND')
If @error Then Exit 13
$sHTML = _IEBodyReadHTML($oIE)

$hFile = FileOpen(@ScriptDir & '\HTMLText.txt', 2)
FileWrite($hFile, $sHTML)
FileClose($hFile)
 
Автор
P

PACHOM

Новичок
Сообщения
99
Репутация
0
Я вот правда виноват перед Вами ... в теме указал что нужно а в самом тексте вопроса забыл.
Записать HTML код нужно уже открытого окна IE с использованием _IEAttach. По этой причине использование
Код:
_IECreate(@ScriptDir & '\test.html')
не нужно.

Спасибо за понимание
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Автор
P

PACHOM

Новичок
Сообщения
99
Репутация
0
На сколько я понял, нужно генерировать не ссылку на объект функцией
Код:
$oFrame = _IEFrameGetObjByName($sIE, "IEFrame")
, а сам объект. А вот в чём разница? Может быть ссылка не позволяет изменять сам объект?
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Не пользуюсь _IEAttach
Мне больше нравится _IECreate с $f_tryAttach = 1

Код:
#include <IE.au3>

$oIE = _IECreate('http://autoit-script.ru/',1)

If @error or Not @extended Then
    _IEQuit ($oIE)
    MsgBox(16 + 4096, 'Сообщение', 'Окно не найдено, завершаем работу скрипта.')
    Exit 13
EndIf

$sHTML = _IEBodyReadHTML($oIE)

$hFile = FileOpen(@ScriptDir & '\HTMLText.txt', 2)
FileWrite($hFile, $sHTML)
FileClose($hFile)
 
Автор
P

PACHOM

Новичок
Сообщения
99
Репутация
0
Не пользуюсь _IEAttach
Мне больше нравится _IECreate с $f_tryAttach = 1
А где в Вашем примере использование $f_tryAttach = 1?
И в Вашем примере нужно создать окно, а мне нужно использовать уже открытое.
Но спасибо всё равно :smile:
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
:laugh:
PACHOM, ты скрипт хоть запусти попробуй. :rofl:
 
Автор
P

PACHOM

Новичок
Сообщения
99
Репутация
0
Да я запускал скрипт. Открывается новое окно браузера ...
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
А ты в
Код:
$oIE = _IECreate('http://autoit-script.ru/',1)


написал адрес своего сайта или оставил как у меня написано
Код:
'http://autoit-script.ru/'
?
 
Автор
P

PACHOM

Новичок
Сообщения
99
Репутация
0
Я оставил как было: с http://autoit-script.ru/
Но на сколько я понял функция
Код:
_IECreate
генерирует новое окно, а не уже открытым.
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Не всегда. Справку читал?
http://autoit-script.ru/autoit3_docs/libfunctions/_iecreate.htm

Код:
$f_tryAttach [опционально]
specifies whether to try to attach to an existing window
0 = (По умолчанию) do not try to attach
1 = Try to attach to an existing window
 
Автор
P

PACHOM

Новичок
Сообщения
99
Репутация
0
У меня дома установлена Win7, на работе будет XP.
Дома работают скрипты с IE только с правами администратора.
Вот Ваш вариант:
Код:
#include <IE.au3>
#RequireAdmin

HotKeySet("{ESC}", "Terminate")

Func Terminate()
    Exit 0
EndFunc


$oIE = _IECreate(@ScriptDir & '\test.html', 1)

If @error or Not @extended Then
    _IEQuit ($oIE)
    MsgBox(16 + 4096, 'Сообщение', 'Окно не найдено, завершаем работу скрипта.')
    Exit 13
EndIf

$sHTML = _IEBodyReadHTML($oIE)

$hFile = FileOpen(@ScriptDir & '\HTMLText.txt', 2)
FileWrite($hFile, $sHTML)
FileClose($hFile)
Файлы прилагаю для тестирования, если будет возможность и желание :smile:
Но у меня не работает этот скрипт. :(
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
PACHOM [?]
Но у меня не работает этот скрипт
Ссылка на файл выглядит по-другому.
Код:
#RequireAdmin
#include <IE.au3>
#include <APIConstants.au3>;ссылка в моей подписи
#include <WinAPIEx.au3>;ссылка в моей подписи

$Url = @ScriptDir & '\test.html'

;$Url = _WinAPI_UrlCanonicalize($Url, $URL_PLUGGABLE_PROTOCOL);это неправильно
$Url = _WinAPI_UrlCreateFromPath($Url)
ConsoleWrite('_WinAPI_UrlCanonicalize: ' & $Url & @LF)
$oIE = _IECreate($Url, 1)

If @error Or Not @extended Then
	MsgBox(16 + 4096, 'Сообщение', 'Окно не найдено, завершаем работу скрипта.')
	Exit 13
EndIf
ConsoleWrite('_IEPropertyGet: ' & _IEPropertyGet($oIE, 'locationurl') & @LF)
$sHTML = _IEBodyReadHTML($oIE)

$hFile = FileOpen(@ScriptDir & '\HTMLText.txt', 2)
FileWrite($hFile, $sHTML)
FileClose($hFile)
 
Автор
P

PACHOM

Новичок
Сообщения
99
Репутация
0
Работает всё ...
Намучились Вы со мной ...
Большое Вам спасибо!

С уважением,
ПАХОМ.
 
Верх