DelphiのGetAsyncKeyState関数の使い方は?

Delphiでは、GetAsyncKeyState関数は指定した仮想キーが押下されているか、または解放されているかを検出するために使用されます。

関数のプロトタイプは次のようになります。

非同期キーの状態を取得する関数

パラメーター vKey には、検査する仮想キーコードを設定します。この関数は、指定された仮想キーの状態を示す SHORT 型の値を返します。

返り値の説明は次のとおりです。

  1. 返り値の最上位ビット(MSB)が1のときは、このキーが押されていることを示します。
  2. この呼び出し前に、そのキーが押されていた場合、戻り値の最下位ビット(LSB)が 1 になります。
  3. 戻り値が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;

注意:

  1. GetAsyncKeyState関数はWindows API関数であるため、それをプログラム内で使用するにはexternalキーワードの宣言が必要です。例:external ‘user32.dll’。
  2. 仮想キーコード(vKey)は、VK_から始まるWindowsで定義された定数として使用できます。例えば VK_A は A キーを表します。仮想キーコードの詳しい一覧は、Windows SDK の winuser.h ファイルで確認できます。
  3. GetAsyncKeyState 関数は仮想キーの状態しか検出できず、実際の物理キーボードの状態は検出できません。
bannerAds