2012-03-30 10 views
0

Beim Erstellen von AutoHotkey-Skript habe ich das folgende Problem festgestellt. Ich brauche eine Navigationsliste (eine Position, um die Richtung zu verringern). Wenn die aktuell ausgewählte Zeile eine untere Zeile des sichtbaren Listenfeldbereichs ist, dauert die Navigation länger, als wenn die Auswahl über der letzten Zeile liegt. Es gibt eine Veranschaulichung video dieses Verhaltens. (EDIT: Wie ich es verstehe, gibt es eine extra-Zeit listbox neu zu zeichnen)Navigieren eines Steuerelements (ListBox) time-lag

Das folgende Skript funktioniert nicht für die ausgewählte bottom-line.

Send, {tab} ; Set focus to ListBox 
Send, {down} ; Navigate Listbox 
Send, {enter} ; Submit selection 

Also, ich kann Sleep, 200 nach dem zweiten Zeile einzufügen. Allerdings gibt es vielleicht eine elegantere Lösung. Wenn eine solche Lösung existiert, beschreiben Sie sie mir bitte.

+0

Sie haben nicht eine Frage noch (es gibt keine Sätze enden mit einem?) Gefragt. –

+0

@HonestAbe: Ich bin kein englischer Muttersprachler. Habe ich mein Problem klar erklärt? –

Antwort

1

Ich bin nicht in der Lage, das Verhalten zu reproduzieren, über das Sie sprechen.

Es gibt wirklich nichts Unfreundliches über das Hinzufügen eines Sleep-Befehls, wenn es die Dinge gut funktioniert.
Schlaf wird sehr oft benötigt, wenn Sie den Befehl Senden verwenden, damit die Dinge in verschiedenen Anwendungen reibungslos funktionieren. Dies liegt daran, dass der Befehl Senden manchmal künstliche Tastenanschläge schneller sendet, als die Anwendung verarbeiten soll. Ich musste Skripte wie schreiben:

für es in mehreren Anwendungen zu arbeiten, um die Druckdauer zu simulieren.
Es gibt natürlich SetKeyDelay aber dann haben Sie nicht so gut Kontrolle.

Eine andere Option ist GuiControl zu wählen.
Hier ist ein einfaches Beispiel:

Gui, Add, DropDownList, vColorChoice, Black|White|Red|Green|Blue 
Gui, Add, ListBox, vChoice Choose1 AltSubmit h120, Red|Green|Blue|Black|White 
Gui, Show, h156 

loop 4 
{ 
Gui, Submit, nohide 
sleep, 1000 
GuiControl, Choose, Choice, % Choice + 1 
Send, {enter}{tab} 
} Return 

Es ist eine Demonstration, kein praktisches Skript. Um etwas Bestimmtes zu wählen, es würde wie folgt aussehen:

GuiControl, Choose, Choice, 3