A_TickCount Befehl ausführen lassen Topic is solved

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

UnReALiTyy
Posts: 223
Joined: 06 Jun 2017, 11:38

A_TickCount Befehl ausführen lassen

24 Apr 2018, 08:27

Hey Leute bei Variablen brauche ich mal Hilfe, ich komm da nur auf ein Holzweg und zwar will ich das 1 Sekunde nach Systemstart ein bestimmter Befehl ausgeführt wird.
Bei mir unten führt er aber überhaupt nichts aus.
Vermutlich muss dies viel komplizierter geschrieben werden als ich es mir vorgestellt habe.
Danke für Hilfe.

Code: Select all

SetTimer, start, 500
return

start:
	if A_TickCount = 1000
	{
	Befehl
	ToolTip, ACTIV
	}
return
gregster
Posts: 9001
Joined: 30 Sep 2013, 06:48

Re: A_TickCount Befehl ausführen lassen  Topic is solved

24 Apr 2018, 08:45

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
just me
Posts: 9451
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: A_TickCount Befehl ausführen lassen

24 Apr 2018, 09:30

Ergänzung: Den Wert des über die Variable A_TickCount verfügbaren Zählers ändert das System auf "Normalrechnern" in Schritten von 15 oder 16 Millisekunden. (Es soll allerdings auch Systeme geben, die alle 10 Millisekunden updaten. Mir ist so einer aber noch nie untergekommen.)

Eine Abfrage auf = ist deshalb nicht erfolgversprechend.
UnReALiTyy
Posts: 223
Joined: 06 Jun 2017, 11:38

Re: A_TickCount Befehl ausführen lassen

24 Apr 2018, 10:07

Ja dachte ich mir schon das es nicht so einfach wäre, naja dann lass ich die finger davon aber danke für die guten tipps

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 70 guests