Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: СОМ-интерфейс на AutoIt-е
Показать сообщение отдельно

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата 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
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:25, 07-08-2009 | #8

Название темы: СОМ-интерфейс на AutoIt-е