- 554 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/29(木) 10:19:13.33 ID:EVCP5Wph0]
- >>553
GetKeyState のループは、ループを抜けた直後にテストすると前回の結果が残ってる場合がある。 GetKeyStateが繰り返される場合は、処理を分岐する前にSleepを入れる必要がある。 If GetKeyState(Vk_C) then g = 0 ifb a = 50 g = 1 while g = 1 If GetKeyState(Vk_C) then g = 0 ↑の順番で実行されるときに前回の結果が残ってて抜けちゃう。 GetKeyState〜GetKeyStateの間のどこかで、0.5秒〜1秒くらいの休みが必要。 ただし、キーを長く押すとSleepを入れても引っかかる。 それをキャンセルしたかったら自分でKBDを送信して上書きするとかが必要。 もっとスマートに解決するなら、キー入力イベントを使うといいよ。 そしたら長く押すとかSleepとか関係なくなる。
|
|