#NoEnv
#Include COM.ahk ; из архива http://www.autohotkey.net/~Sean/Lib/COM.zip | тема http://www.autohotkey.com/forum/viewtopic.php?t=22923
SetBatchLines, -1
OnExit, exsub
Run, iexplore.exe ; запускаем IE
; сайты для тестов, js
site1 := "http://yandex.ru/"
site2 := "http://google.ru/"
js1 := "document.getElementByID[sbtn].value" ; значение по ID элемента
js2 := "document.getElementsByTagName[input].item[2].value" ; значение из 2-го элемента input
js3 := "document.getElementsByName[btnG].item[1].value" ; значение элемента по параметру name
COM_CoInitialize()
COM_Error(0) ; отключаем сообщения об ошибках
Loop 5 ; 5 попыток
{
pwb := GetWebBrowser() ; получаем ссылку к объекту IE | pwb := IEGet("http://www.yandex.ru/") - альтернатива, если окно уже существует
Sleep 1000
If pwb
Break
}
If !pwb
ExitApp
COM_Invoke(pwb, "Navigate", site1) ; перейдём на яндекс
While, COM_Invoke( pwb, "ReadyState" ) <> 4 ; ожидаем полной загрузки
Sleep 50
value1 := COM_Invoke(pwb, js1) ; получаем значение value
value2 := COM_Invoke(pwb, js2)
COM_Invoke(pwb, "Navigate", site2) ; идём на гугл
While, COM_Invoke( pwb, "ReadyState" ) <> 4 ; ожидаем полной загрузки
Sleep 50
value3 := COM_Invoke(pwb, js3)
MsgBox %js1% - %site1%:`n%value1%`n`n%js2% - %site1%:`n%value2%`n`n%js3% - %site2%:`n%value3%
exsub:
COM_Release(pwb)
COM_CoUninitialize()
ExitApp
Return
GetWebBrowser() ; http://www.autohotkey.com/forum/viewtopic.php?p=155900#155900
{
ControlGet, hIESvr, hWnd, , Internet Explorer_Server1, ahk_class IEFrame
If Not hIESvr
Return
DllCall("SendMessageTimeout", "Uint", hIESvr, "Uint", DllCall("RegisterWindowMessage", "str", "WM_HTML_GETOBJECT"), "Uint", 0, "Uint", 0, "Uint", 2, "Uint", 1000, "UintP", lResult)
DllCall("oleacc\ObjectFromLresult", "Uint", lResult, "Uint", COM_GUID4String(IID_IHTMLDocument2,"{332C4425-26CB-11D0-B483-00C04FD90119}"), "int", 0, "UintP", pdoc)
IID_IWebBrowserApp := "{0002DF05-0000-0000-C000-000000000046}"
pweb := COM_QueryService(pdoc,IID_IWebBrowserApp,IID_IWebBrowserApp)
COM_Release(pdoc)
Return pweb
}
IEGet( name="" ) ; http://www.autohotkey.com/forum/viewtopic.php?t=51020
{
IfEqual, Name,, WinGetTitle, Name, ahk_class IEFrame ; Get active window if no parameter
Name := ( Name="New Tab - Windows Internet Explorer" ) ? "about:Tabs" : RegExReplace( Name, " - (Windows|Microsoft) Internet Explorer" )
oShell := COM_CreateObject( "Shell.Application" ) ; Contains reference to all explorer windows
Loop, % COM_Invoke( oShell, "Windows.Count" ) {
If pwb := COM_Invoke( oShell, "Windows.item[" A_Index-1 "]" )
If ( COM_Invoke( pwb, "LocationName" ) = name && InStr( COM_Invoke( pwb, "FullName" ), "iexplore.exe" ) )
Break
COM_Release( pwb ), pwb := ""
}
COM_Release( oShell )
Return, pwb
}