2012-03-30 6 views
0

AutoHotkeyスクリプトを作成中に、次の問題が発生しました。私はリストボックスをナビゲートする必要があります。現在選択されている行が目に見えるリストボックス領域の一番下の行である場合、選択範囲が最後の行よりも長い場合、ナビゲーションに時間がかかります。この現象の説明videoがあります。 (EDIT:私の理解では、リストボックスを再描画するために余分な時間がある)コントロール(ListBox)のタイムラグをナビゲートする

次のスクリプトは、選択したボトムラインでは動作しません。

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

したがって、Sleep, 200を2行目以降に挿入できます。しかし、もっと洗練されたソリューションがあるかもしれません。そのような解決策が存在する場合は、それを私に説明してください。

+0

あなたはまだ質問していません(?で終わる文はありません)。 –

+0

@HonestAbe:私は母国語ではない。私は私の問題を明確に説明しましたか? –

答えて

1

あなたが話している動作を再現できません。

実際にうまくいくようにするには、スリープコマンドを1つ追加するだけの方法はありません。
さまざまなアプリケーションでスムーズに動作するように送信コマンドを使用する場合、スリープが非常に頻繁に必要になります。 Sendコマンドは、アプリケーションが処理するよりも速く擬似キーストロークを送信することがあるためです。それは押し期間をシミュレートするために、いくつかのアプリケーションで動作するために

Send, {x down} 
Sleep, 50 
Send, {x up} 

:私のようなスクリプトを記述する必要がありました。
もちろん、SetKeyDelayがありますが、あなたはコントロールの細かさがありません。

もう1つのオプションは、GuiControlを使用して項目を選択しています。ここ
は荒い例である:

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 

それはデモではなく、実用的なスクリプトです。 具体的なものを選択するには、次のようになります。

GuiControl, Choose, Choice, 3 
関連する問題