全てのキーの状態を取得する

最終更新 2003 09/24

サンプルのダウンロード → API_GetKeyboardState.lzh(37k)

サンプルプログラムのスクリーンショット

全ソースコード


    
GetKeyboardState 関数
    
    対応しているバージョン
    95, 98, Me, NT3.1以降, 2000, XP
        
    使用するヘッダとライブラリ
    winuser.h
    user32.lib
自分はまだこの関数を使うような状況に遭ったことはないのですが 「とりあえず、全部のキーが押されているかどうか知りたい。」という状況も なきにしもあらずなので、説明します。 BYTE key_state[256]; GetKeyboardState( key_state ); 値の取得は上の通りです。BYTE 型か char 型の配列変数を用意して、それを GetKeyboardState() 関数の引数として渡してあげると、押されているキーの 状態が配列変数に格納されて返ってきます。 添え字(インデックス)は必ず256にします。 値を参照したい時は if( key_state[キーコード] & 0x80 ){ /* キーが押されている */ } などとやれば調べることができます。 MSDNを読むと、key_state[キーコード] の値の最上位ビットが1なら キーが押されていることになる・・・と書いてあるので、ビット演算をして ビットが立っているかどうかを調べる必要があります。 key_state[キーコード] の値の最上位ビットを調べるには、サンプルの ように key_state[キーコード] の値と 0x80(128) の AND をとります。 キーコードには仮想キーコードを使うと良いと思います。 仮想キーコードの一覧を作ったので、よければ参考にしてみて下さい。 仮想キーコード一覧

| home |