DelphiのGetAsyncKeyState関数の使い方は?
Delphiでは、GetAsyncKeyState関数は指定した仮想キーが押下されているか、または解放されているかを検出するために使用されます。
関数のプロトタイプは次のようになります。
非同期キーの状態を取得する関数
パラメーター vKey には、検査する仮想キーコードを設定します。この関数は、指定された仮想キーの状態を示す SHORT 型の値を返します。
返り値の説明は次のとおりです。
- 返り値の最上位ビット(MSB)が1のときは、このキーが押されていることを示します。
- この呼び出し前に、そのキーが押されていた場合、戻り値の最下位ビット(LSB)が 1 になります。
- 戻り値が0の場合は、そのキーは押されていないことを示します。
例えば、キーボードのAキーが押されているかどうかをチェックするには、次のコードを使用できます。
var
keyState: SHORT;
begin
keyState := GetAsyncKeyState(VK_A);
if keyState < 0 then
ShowMessage(‘A键正在被按下’);
else if (keyState and 1) = 1 then
ShowMessage(‘A键在此次调用之前被按下’);
else
ShowMessage(‘A键未被按下’);
end;
注意:
- GetAsyncKeyState関数はWindows API関数であるため、それをプログラム内で使用するにはexternalキーワードの宣言が必要です。例:external ‘user32.dll’。
- 仮想キーコード(vKey)は、VK_から始まるWindowsで定義された定数として使用できます。例えば VK_A は A キーを表します。仮想キーコードの詳しい一覧は、Windows SDK の winuser.h ファイルで確認できます。
- GetAsyncKeyState 関数は仮想キーの状態しか検出できず、実際の物理キーボードの状態は検出できません。