<script src="../static/ga4.js" type="text/javascript"></script> </head> <body> <h1>Sleep</h1> <p>Wartet eine bestimmte Zeit, bevor die Ausführung fortgesetzt wird.</p> <pre class="Syntax"><span class="func">Sleep</span> Verzögerung</pre> <h2 id="Parameters">Parameter</h2> <dl> <dt>Verzögerung</dt> <dd> <p>Typ: <a href="../Concepts.htm#numbers">Integer</a></p> <p>Die Wartezeit zwischen 0 und 2147483647 Millisekunden (24 Tage).</p> </dd> </dl> <h2 id="Remarks">Bemerkungen</h2> <p>Durch die Granularität (Ungenauigkeit) der Zeiterfassung im Betriebssystem wird <em>Verzögerung</em> möglicherweise auf das nächstmögliche Vielfache von 10 oder 15.6 Millisekunden aufgerundet (abhängig vom Typ der installierten Hardware und Treiber). Um eine kürzere Verzögerung zu erreichen, siehe <a href="#ExShorterSleep">Beispiele</a>.</p> <p>Die tatsächliche Verzögerung kann länger als erwartet ausfallen, wenn die CPU stark ausgelastet ist. Der Grund dafür ist, dass das Betriebssystem einen Teil der CPU-Zeit (in der Regel 20 Millisekunden) an jeden Prozess abgibt, der sie benötigt, bevor es dem Skript eine weitere Zeitscheibe übergibt.</p> <p>Eine Verzögerung von 0 gibt den Rest der aktuellen Zeitscheibe des Skripts an alle anderen Prozesse ab, die sie benötigen (solange sie nicht eine wesentlich niedrigere <a href="ProcessSetPriority.htm">Priorität</a> als das Skript haben). Daher erzeugt eine Verzögerung von 0 in Wirklichkeit eine Verzögerung zwischen 0 und 20&nbsp;ms (oder mehr), abhängig von der Anzahl der bedürftigen Prozesse (sind keine vorhanden, erfolgt überhaupt keine Verzögerung). Eine <em>Verzögerung</em> von 0 sollte jedoch immer damit enden, dass sie kürzer als jede andere längere <em>Verzögerung</em> ist.</p> <p>Während des Sleeps können neue <a href="../misc/Threads.htm">Threads</a> via <a href="../Hotkeys.htm">Hotkeys</a>, <a href="Menu.htm">benutzerdefinierte Menüpunkte</a> oder <a href="SetTimer.htm">Timer</a> gestartet werden.</p> <p><strong>Sleep -1:</strong> Eine Verzögerung von -1 führt nicht zu einem Sleep, sondern veranlasst das Skript, sofort seine Meldungswarteschlange zu prüfen. Dies kann verwendet werden, um anstehende <a href="../misc/Threads.htm">Unterbrechungen</a> an einer bestimmten Stelle zu erzwingen, nicht an einer zufälligen Stelle. Weitere Informationen finden Sie unter <a href="Critical.htm">Critical</a>.</p> <h2 id="Related">Siehe auch</h2> <p><a href="SetKeyDelay.htm">SetKeyDelay</a>, <a href="SetMouseDelay.htm">SetMouseDelay</a>, <a href="SetControlDelay.htm">SetControlDelay</a>, <a href="SetWinDelay.htm">SetWinDelay</a></p> <h2 id="Examples">Beispiele</h2> <div class="ex" id="ExBasic"> <p><a class="ex_number" href="#ExBasic"></a> Wartet 1 Sekunde, bevor die Ausführung fortgesetzt wird.</p> <pre>Sleep 1000</pre> </div> <div class="ex" id="ExExpr"> <p><a class="ex_number" href="#ExExpr"></a> Wartet 30 Minuten, bevor die Ausführung fortgesetzt wird.</p> <pre>MeineVar := 30 * 60000 <em>; 30 bedeutet Minuten und mal 60000 ergibt die Zeit in Millisekunden.</em> Sleep MeineVar <em>; Wartet für 30 Minuten.</em></pre> </div> <div class="ex" id="ExShorterSleep"> <p><a class="ex_number" href="#ExShorterSleep"></a> Zeigt, wie ein Sleep kürzer als die üblichen 10 oder 15.6 Millisekunden erzeugt werden kann. Hinweis: Während ein Skript dieser Art läuft, werden das gesamte Betriebssystem und alle Anwendungen von timeBeginPeriod beeinflusst.</p> <pre> SleepDauer := 1 <em>; Muss manchmal nachjustiert werden (z.B. ist 2 anders als 3), abhängig vom unteren Wert.</em> ZeitPeriode := 3 <em>; Probieren Sie 7 oder 3 aus. Siehe Kommentar unten. ; Sie können auf einem PC, wo die Sleep-Dauer normalerweise auf 15.6 ms aufgerundet wird, ZeitPeriode:=7 ausprobieren, ; um kürzere Sleeps zu ermöglichen, und ZeitPeriode:=3 oder weniger, um die kürzesten Sleeps zu ermöglichen.</em> DllCall("Winmm\timeBeginPeriod", "UInt", ZeitPeriode) <em>; Beeinflusst alle Anwendungen, nicht nur das DllCall("Sleep"...) des Skripts, aber nicht SetTimer.</em> Wiederholungen := 50 StartZeit := A_TickCount Loop Wiederholungen DllCall("Sleep", "UInt", SleepDauer) <em>; DllCall muss anstelle der Sleep-Funktion verwendet werden.</em> DllCall("Winmm\timeEndPeriod", "UInt", ZeitPeriode) <em>; Sollte aufgerufen werden, um das System wieder zu normalisieren.</em> MsgBox "Sleep-Dauer = " . (A_TickCount - StartZeit) / Wiederholungen</pre> </div> </body> </html>