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