| 1 | #include <MsgBoxConstants.au3>
|
|---|
| 2 |
|
|---|
| 3 | ; AutoIt 3.1.1.x beta
|
|---|
| 4 | ;
|
|---|
| 5 | ; COM Test File
|
|---|
| 6 | ;
|
|---|
| 7 | ; Testing Error Event handling by creating a WMI exception
|
|---|
| 8 |
|
|---|
| 9 | Local $sMyCompName = @ComputerName
|
|---|
| 10 |
|
|---|
| 11 | ; Initialize my error handler
|
|---|
| 12 | Global $g_nComError, $g_oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
|
|---|
| 13 |
|
|---|
| 14 | ; Open WMI
|
|---|
| 15 | Local $oWMIservice = ObjGet("winmgmts:\\" & $sMyCompName & "\root\cimv2")
|
|---|
| 16 |
|
|---|
| 17 | ; Check is WMI opened successfully
|
|---|
| 18 | If @error Then
|
|---|
| 19 | MsgBox($MB_SYSTEMMODAL, "AutoItCOM Test", "Error getting object $oWMIservice. Error code: " & @error)
|
|---|
| 20 | Exit
|
|---|
| 21 | EndIf
|
|---|
| 22 |
|
|---|
| 23 | ; Here are the lines of code that cause the crash:
|
|---|
| 24 | ;workaround: $g_oMyError = Null
|
|---|
| 25 | $g_oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
|
|---|
| 26 | ; Try a query
|
|---|
| 27 | Local $oColProcessors = $oWMIservice.ExecQuery("Select * from Win32_Processor")
|
|---|
| 28 | ;workaround: $g_oMyError = Null
|
|---|
| 29 | $g_oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
|
|---|
| 30 | ; The crash occurs after this line.
|
|---|
| 31 |
|
|---|
| 32 | ; THIS line should deliberately fail!
|
|---|
| 33 | Local $vItem1 = $oColProcessors.item(1)
|
|---|
| 34 |
|
|---|
| 35 | If $g_nComError Then
|
|---|
| 36 | MsgBox($MB_SYSTEMMODAL, "AutoItCOM test", "Test passed: We got an error number: 0x" & Hex($g_nComError))
|
|---|
| 37 | Else
|
|---|
| 38 | MsgBox($MB_SYSTEMMODAL, "AutoItCOM test", "Test failed!")
|
|---|
| 39 | EndIf
|
|---|
| 40 |
|
|---|
| 41 | Exit
|
|---|
| 42 |
|
|---|
| 43 | ; This is my custom error handler
|
|---|
| 44 | Func MyErrFunc()
|
|---|
| 45 | Local $sHexNumber = Hex($g_oMyError.number, 8)
|
|---|
| 46 |
|
|---|
| 47 | MsgBox($MB_SYSTEMMODAL, "AutoItCOM Test", "We intercepted a COM Error !" & @CRLF & @CRLF & _
|
|---|
| 48 | "err.description is: " & @TAB & $g_oMyError.description & @CRLF & _
|
|---|
| 49 | "err.windescription:" & @TAB & $g_oMyError.windescription & @CRLF & _
|
|---|
| 50 | "err.number is: " & @TAB & $sHexNumber & @CRLF & _
|
|---|
| 51 | "err.lastdllerror is: " & @TAB & $g_oMyError.lastdllerror & @CRLF & _
|
|---|
| 52 | "err.scriptline is: " & @TAB & $g_oMyError.scriptline & @CRLF & _
|
|---|
| 53 | "err.source is: " & @TAB & $g_oMyError.source & @CRLF & _
|
|---|
| 54 | "err.helpfile is: " & @TAB & $g_oMyError.helpfile & @CRLF & _
|
|---|
| 55 | "err.helpcontext is: " & @TAB & $g_oMyError.helpcontext _
|
|---|
| 56 | )
|
|---|
| 57 |
|
|---|
| 58 | $g_nComError = $g_oMyError.number
|
|---|
| 59 | EndFunc ;==>MyErrFunc
|
|---|