Hab mal eben ein älteres Script benutzen wollen welches mit AdlibRegister parallel zum eigentlichen Script Daten aus einer Datei ausliest.
Leider musste ich feststellen das dies nicht mehr funktioniert.
Das Problem scheint die Zeit zu sein welche die registrierte Funktion benötigt. Ist diese >= der Zeit die bei AdlibRegister als Parameter angegeben ist, dann wird nur noch die registrierte Funktion ausgeführt für immer.
Hier das Beispiel ist aus der Hilfe. Default ist 250ms also hab ich ein Sleep(250) in die Funktion gesetzt um das Verhalten zu simulieren.
Konnte im Changelog nichts dazu finden wurde anscheinend nur ein Bug behoben der mehrere gleichzeitig registrierte Funktionen betrifft.
Trotzdem bin ich mir sehr sicher, dass dies in früheren Versionen nicht so war. Ist ja auch irgendwie Sinnlos anzugeben nach wie viel ms die Funktion aufgerufen wird. Stattdessen sollte man doch angeben wie viel Zeit zwischen den Aufrufen vergehen sollte. Man kann ja nicht wissen wie lange die Funktion braucht und je nach dem brauch die ja auch unterschiedlich lange. Normal sehr kurz und bei Reaktion auf ne Veränderung dann eventuell einiges länger. Zudem ist das ja auch Hardware abhängig.
Kann jemand bestätigen dass die Funktion geändert wurde? Gibt es ein Workaround?
[autoit]
#include <MsgBoxConstants.au3>
If ProcessExists("SciTE.exe") = 0 Then
MsgBox($MB_SYSTEMMODAL, "", "You will need SciTE.exe to be running for ConsoleWrite to display.")
EndIf
Example()
[/autoit][autoit][/autoit][autoit]Func Example()
; Register the function MyAdLibFunc() to be called every 250ms (default).
AdlibRegister("MyAdLibFunc")
; Sleep does not stop AdLib functions from running.
Sleep(1000)
; AdLib functions don't run while a blocking function is shown e.g. MsgBox, InputBox, WinWait, WinWaitClose etc.
MsgBox($MB_SYSTEMMODAL, "", "No console message(s) will be shown whilst the messagebox is displayed.")
; The AdLib function MyAdLibFunc() will start again.
Sleep(2000)
; Unregister the function MyAdLibFunc() from being called every 250ms.
AdlibUnRegister("MyAdLibFunc")
EndFunc ;==>Example
Func MyAdLibFunc()
Sleep(250)
; Assign a static variable to hold the number of times the function is called.
Local Static $iCount = 0
$iCount += 1
ConsoleWrite("MyAdLibFunc called " & $iCount & " time(s)" & @CRLF)
EndFunc ;==>MyAdLibFunc