Цитата abb269:
Как написать свой обработчик какого-нибудь события на AutoIt? »
|
хороший вопрос, вообще-то для этого есть
ObjEvent(), но если для MS Word этот метод работает, то для MS Excel почему-то нет...
на форуме оффсайта вопрос поднимался, но ответа никто так и не дал:
Failing to hook Excel events. Error on ObjEvent() call with Excel, but not with Word... собственно, пример для WORD:
Код:
$oWord = ObjCreate("Word.Application")
$oWord.Visible = 1
$oWord.Activate ()
$hwnd = WinGetHandle("[ACTIVE]")
$oMyError = ObjEvent("AutoIt.Error","MyErrFunc")
$oMyEvent = ObjEvent($oWord, "Evt_")
$oWord.Documents.Add ()
$oWord.Documents.Add ()
$oWord.ActiveDocument.Close ()
While WinExists($hwnd)
Sleep(50)
WEnd
Func Evt_DocumentBeforeClose()
ConsoleWrite("Captured Mesage: DocumentBeforeClose" &@CRLF)
EndFunc
Func Evt_NewDocument()
ConsoleWrite("Captured Mesage: NewDocument" &@CRLF)
EndFunc
Func Evt_Quit()
ConsoleWrite("Captured Mesage: Quit" &@CRLF)
EndFunc
Func MyErrFunc()
Dim $msgTxt
$msgTxt = "We intercepted a COM Error !" & @CRLF & @CRLF & _
"err.description is: " & @TAB & $oMyError.description & @CRLF & _
"err.windescription:" & @TAB & $oMyError.windescription & @CRLF & _
"err.number is: " & @TAB & hex($oMyError.number,8) & @CRLF & _
"err.lastdllerror is: " & @TAB & $oMyError.lastdllerror & @CRLF & _
"err.scriptline is: " & @TAB & $oMyError.scriptline & @CRLF & _
"err.source is: " & @TAB & $oMyError.source & @CRLF & _
"err.helpfile is: " & @TAB & $oMyError.helpfile & @CRLF & _
"err.helpcontext is: " & @TAB & $oMyError.helpcontext
Msgbox(0,"AutoItCOM Test", $msgTxt)
ConsoleWrite($msgTxt & @LF)
Local $err = $oMyError.number
If $err = 0 Then $err = -1
$g_eventerror = $err ; to check for after this function returns
Endfunc