Creat0R
Цитата Creat0R:
прикрепил новый UDF к посту »
|
у меня все работает без ошибок, могу предположить, что CallBack удаляется до обработки всех WM_TIMER, между прочим в
MSDN сказано:
Цитата MSDN:
The KillTimer function does not remove WM_TIMER messages already posted to the message queue
|
попробуй такой вариант:
Код:

Func OnAutoItExit()
Local $aRet, $QS_TIMER = 0x0010
If $uiTimer<>0 Then DllCall("user32.dll", "int", "KillTimer", "hwnd", 0, "int", $uiTimer)
If $pTimerProc<>0 Then
Do
$aRet = DllCall("user32.dll", "dword", "GetQueueStatus", "uint", $QS_TIMER)
Until BitAnd(BitRotate($aRet[0], 16, "D"), $QS_TIMER) =0
DllCallbackFree($pTimerProc)
EndIf
$pTimerProc = 0
$uiTimer = 0
EndFunc
ADD: хотя может достаточно просто поменять местами строки - сначала закрыть таймер и только потом CallBack?
Цитата Creat0R:
есть ещё и версия без DllCalbackRegister, на основе WM_TIMER, но там есть свои ограничения (привязка к фиктивному GUI). »
|
там тоже скрипт вылетает?
Цитата Creat0R:
лишний раз вызывать функции мне кажется лишним
|
зато хэндлы ставятся/удаляются только один раз при том же эффекте