#include <IE.au3>
Global $_IENativeFunctionsHandler_Interation=0
$ie=_IECreate('ya.ru')
_IENativeFunctionsHandler_Initailize($ie) ;Инициализировать при каждом переходе
_IENativeFunctionsHandler_SetPromptAnswer($ie,'288') ;устанавливаем ответ на Prompt-запросы
;Выполняем действие вызывающее Prompt
;Также можно получать содержимое alert-запросов
$sAlertAnsw=_IENativeFunctionsHandler_WaitForAlert($ie,10000)
MsgBox(0,'Alert',$sAlertAnsw)
;и тексты prompt запросов
$aPromptRequest=_IENativeFunctionsHandler_WaitForPrompt($ie,10000)
#include <Array.au3>
_ArrayDisplay($aPromptRequest)
Func _IENativeFunctionsHandler_Initailize(ByRef $oIE)
$oContainer=$oIE.document.getElementById('NativeFunctionsInteractionContainer')
if isobj($oContainer) Then Return SetError(1,0,0)
$oContainer=$oIE.document.getElementById('NativeFunctionsInteractionPromptAnswer')
if isobj($oContainer) Then Return SetError(2,0,0)
$oContainer=$oIE.document.createElement("span")
$oContainer.id='NativeFunctionsInteractionContainer'
$oContainer.style.display="none"
$oContainer.innerHTML='o'
$oIE.document.body.appendChild($oContainer)
$oContainer=$oIE.document.createElement("span")
$oContainer.id='NativeFunctionsInteractionPromptAnswer'
$oContainer.style.display="none"
$oContainer.innerHTML='false'
$oIE.document.body.appendChild($oContainer)
$oIE.document.parentWindow.execScript("window.NativeFunctionsInteractionCounter=0")
$oIE.document.parentWindow.execScript("window.alert=function(str){document.getElementById('NativeFunctionsInteractionContainer').innerHTML=document.getElementById('NativeFunctionsInteractionContainer').innerHTML+'|a'+String(str).replace('|','').replace(';','');window.NativeFunctionsInteractionCounter++;}")
$oIE.document.parentWindow.execScript("window.prompt=function(str,val){document.getElementById('NativeFunctionsInteractionContainer').innerHTML=document.getElementById('NativeFunctionsInteractionContainer').innerHTML+'|p'+String(str).replace('|','').replace(';','')+';'+String(val).replace('|','').replace(';','');window.NativeFunctionsInteractionCounter++;return document.getElementById('NativeFunctionsInteractionPromptAnswer').innerHTML;}")
$_IENativeFunctionsHandler_Interation=0
return True
EndFunc
Func _IENativeFunctionsHandler_WaitForAlert(ByRef $oIE,$timeout=10000)
$oContainer=$oIE.document.getElementById('NativeFunctionsInteractionContainer')
if Not isobj($oContainer) Then Return SetError(1,0,0)
$time=TimerInit()
while timerdiff($time)<$timeout
$sAllMsg=$oContainer.innerHTML
$iStart=StringInStr($sAllMsg,'|',0,$_IENativeFunctionsHandler_Interation+1)
if $iStart Then
$sType=StringMid($sAllMsg,$iStart+1,1)
if $sType='a' Then
ExitLoop
Else
$_IENativeFunctionsHandler_Interation+=1
EndIf
EndIf
WEnd
if Not $iStart Then Return SetError(2,0,0)
$iEnd=StringInStr($sAllMsg,'|',0,$_IENativeFunctionsHandler_Interation+2)
$sMsg=StringMid($sAllMsg,$iStart+2,$iEnd)
if not $iEnd Then $sMsg=StringMid($sAllMsg,$iStart+2)
$_IENativeFunctionsHandler_Interation+=1
return $sMsg
EndFunc
Func _IENativeFunctionsHandler_SetPromptAnswer(ByRef $oIE,$sAnswer)
$oContainer=$oIE.document.getElementById('NativeFunctionsInteractionPromptAnswer')
if Not isobj($oContainer) Then Return SetError(1,0,0)
$time=TimerInit()
$oContainer.innerHTML=$sAnswer
return True
EndFunc
Func _IENativeFunctionsHandler_WaitForPrompt(ByRef $oIE,$timeout=10000)
$oContainer=$oIE.document.getElementById('NativeFunctionsInteractionContainer')
if Not isobj($oContainer) Then Return SetError(1,0,0)
$time=TimerInit()
while timerdiff($time)<$timeout
$sAllMsg=$oContainer.innerHTML
$iStart=StringInStr($sAllMsg,'|',0,$_IENativeFunctionsHandler_Interation+1)
if $iStart Then
$sType=StringMid($sAllMsg,$iStart+1,1)
if $sType='p' Then
ExitLoop
Else
$_IENativeFunctionsHandler_Interation+=1
EndIf
EndIf
WEnd
if Not $iStart Then Return SetError(2,0,0)
$iEnd=StringInStr($sAllMsg,'|',0,$_IENativeFunctionsHandler_Interation+2)
$sMsg=StringMid($sAllMsg,$iStart+2,$iEnd)
if not $iEnd Then $sMsg=StringMid($sAllMsg,$iStart+2)
$aMsg=StringSplit($sMsg,';')
$_IENativeFunctionsHandler_Interation+=1
return $aMsg
EndFunc