Что нового

[Интеракция] Отслеживание работы функции

Dellroc

Осваивающий
Сообщения
151
Репутация
31
Добрый день.
Возникла проблема с зависанием функции в скрипте, а именно при подключении через WMI происходит зависание в ожидании ответа, который не приходит. Подскажите как сделать таймаут для такого подключения?
 

Garrett

Модератор
Локальный модератор
Сообщения
3 999
Репутация
964
Dellroc
Экстрасенсов нет, предоставьте ваш код.
 
Автор
D

Dellroc

Осваивающий
Сообщения
151
Репутация
31
Код:
$oWMI = ObjGet('winmgmts:{impersonationLevel = impersonate}!\\'&$PC&'\root\cimv2:Win32_Process')

На вот этой строчке запинается в ожидании ответа
 

Garrett

Модератор
Локальный модератор
Сообщения
3 999
Репутация
964
Код:
$sPC = "."
$oServices = ObjGet("winmgmts:\\" & $sPC & "\root\CIMV2")
$oProcessSet = $oServices.ExecQuery("SELECT Name FROM Win32_Process")
For $oProcess In $oProcessSet
   ConsoleWrite(StringFormat("Process name: ==> %s\n", $oProcess.Name))
Next
 
Автор
D

Dellroc

Осваивающий
Сообщения
151
Репутация
31
Код:
$oServices = ObjGet("winmgmts:\\" & $sPC & "\root\CIMV2")
$oProcessSet = $oServices.ExecQuery("SELECT Name FROM Win32_Process")

На каком-то из этих этапов залипает и мне нужно сделать так, чтобы он пропускал эти шаги по таймауту.
 

Garrett

Модератор
Локальный модератор
Сообщения
3 999
Репутация
964
Dellroc [?]
На каком-то из этих этапов залипает
Код:
Local $oErrorHandler = ObjEvent("AutoIt.Error", "_ErrFunc")
; ====================================================================================================
; Ваш код
; ====================================================================================================
Func _ErrFunc($oError)
   ConsoleWrite(@ScriptName & " (" & $oError.scriptline & ") : ==> COM Error intercepted !" & @CRLF & _
		 @TAB & "err.number is: " & @TAB & @TAB & "0x" & Hex($oError.number) & @CRLF & _
		 @TAB & "err.windescription:" & @TAB & $oError.windescription & @CRLF & _
		 @TAB & "err.description is: " & @TAB & $oError.description & @CRLF & _
		 @TAB & "err.source is: " & @TAB & @TAB & $oError.source & @CRLF & _
		 @TAB & "err.helpfile is: " & @TAB & $oError.helpfile & @CRLF & _
		 @TAB & "err.helpcontext is: " & @TAB & $oError.helpcontext & @CRLF & _
		 @TAB & "err.lastdllerror is: " & @TAB & $oError.lastdllerror & @CRLF & _
		 @TAB & "err.scriptline is: " & @TAB & $oError.scriptline & @CRLF & _
		 @TAB & "err.retcode is: " & @TAB & "0x" & Hex($oError.retcode) & @CRLF & @CRLF)
EndFunc ;==>_ErrFunc
 
Автор
D

Dellroc

Осваивающий
Сообщения
151
Репутация
31
Спасибо. Попробую.
 
Автор
D

Dellroc

Осваивающий
Сообщения
151
Репутация
31
С этим кодом стал ошибку выдавать, но таймаут по прежнему большой. Его как-то можно уменьшить?
 
Верх