処理の途中で強制終了

解決


ちゃまき  2012-08-17 05:17:17  No: 147743

For 〜NEXT などのループ処理の途中で、とあるキーを押すとExit For するようにしたいのですが、処理途中で特定のキーが押されたことを判断するにはどうすればよいのでしょうか?


Koz  2012-08-17 09:13:47  No: 147744

GetAsyncKeyState API を使う方法があります。

Private Declare Function GetAsyncKeyState _
    Lib "user32" (ByVal vKey As Integer) As Short

Private Sub Button1_Click( _
        ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button1.Click
    Const VK_A As Integer = 65
    Do
        If GetAsyncKeyState(VK_A) <> 0 Then Exit Do
    Loop
    MessageBox.Show("Aキーが押されました。")
End Sub


ちゃまき  2012-08-17 17:03:29  No: 147745

Kozさんありがとうございました。

無事解決しました。キーによって固有の番号があり、それを変更することで、いろいろなキーに対応できるのですね。
使ってみます。


shu  2012-08-18 22:11:15  No: 147746

解決したようですが、
時間が掛かると思われる処理内でキーボード状態を
取得するのではなく
時間が掛かる処理を別スレッド化したりタイマーにより
処理の占有時間を減らすなどして
KeyPress、KeyDownイベントなどによりキー押下を判断したほうが
良いと思います。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加