11/12/29 10:19:13.33 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とか関係なくなる。