0

PostMessage を使用して Windows メッセージをアプリケーションに送信しています。現在、このコードは、矢印キー (VK_RIGHT または VK_LEFT) 以外のキーを送信するときに正常に機能します。

procedure SendKey(key: Variant);
var
  lParam: integer;
  scancode: integer;
begin
  if (VarType(key) = varUString) then
  begin
    scancode := MapVirtualKey(Ord(VarToStr(key)[1]), MAPVK_VK_TO_VSC);
    lParam := scancode shl 16;
    PostMessage(_hWindow, WM_KEYDOWN, scancode, lParam);
    PostMessage(_hWindow, WM_KEYUP, scancode, lParam);
  end else
  begin
    lParam := MapVirtualKey(key, MAPVK_VK_TO_VSC) shl 16;
    PostMessage(_hWindow, WM_KEYDOWN, key, lParam);
    PostMessage(_hWindow, WM_KEYUP, key, lParam);
  end;
end;

lParam がどのように見えるかを確認するために、VK_LEFT/RIGHT の WM_KEYDOWN/UP メッセージを監視するキーボード フックをインストールしました。いくつかの奇妙な値に遭遇しました。右矢印キー (VK_RIGHT) を押したときの DebugView の出力は次のとおりです。

[2776] wParam: 39, lParam: 21823489
[2776] wParam: 39, lParam: -1051918335

これらの値がハードコードされたメッセージを送信しようとしても、何も起こりません。何が起こっているのですか? ありがとう。

4

1 に答える 1