If A_TickCount = 1000 ist eine ziemlich restriktive Bedingung.
Du kannst nicht davon ausgehen, dass das Skript bei Tickcount 0 (das ist wahrscheinlich sowieso unmöglich) erstmals ausgeführt wird - und es gilt auch für den Parameter
Periode laut Doks: "Der absolute Wert von diesem Parameter ist die
ungefähre Zeit in Millisekunden, die ablaufen muss, bevor der Timer ausgeführt wird." (Hervorhebung durch mich)
Die Ws., dass der Timer bzw. der If-Vergleich also ausgerechnet zu dem Zeitpunkt ausgeführt wird, wenn der Tickcount gleich 1000 ist, ist sehr gering (Ich habe Zweifel, ob Skripte im Autostart-Ordner überhaupt (zuverlässig) während der ersten Sekunde nach dem Systemstart gestartet werden - da wird ja in der Regel einiges vom System hin- und hergerödelt).
Ich würd daher
= 1000 durch
>= 1000 ersetzen und hoffen, dass das dem Zielwert möglichst nahe kommt. Gut wäre es dann auch, wenn man vor dem Start des Timers direkt mal mit
gosub, start testet, ob die Bedingung nicht schon beim Skriptstart erfüllt ist (der Timer wird erstmals ca. 500 ms nach Skriptstart ausgeführt).
Wenn der
Befehl insgesamt nur einmal ausgeführt werden soll, würde ich dann noch
ExitApp in den if-Block hinzufügen...
Also sowas:
Code: Select all
gosub, start
SetTimer, start, 500
return
start:
if A_TickCount >= 1000
{
Befehl
ToolTip, ACTIV
ExitApp
}
return
Oder vielleicht eher so:
Code: Select all
While (A_tickcount < 1000)
sleep, 50
Befehl
ToolTip, ACTIV
Edited