WinAPI関数を使用して、メモ帳などの他のアプリケーションで特定のテキストキーをキーごとに書き込む機能を作成しようとしていますSendMessage
。私はこのようなコードを持っています:
//
SendMessage(handle, WM_CHAR, 0x41, 0);
SendMessage(handle, WM_CHAR, (int)Keys.A, 0); // 0x41
SendMessage(handle, WM_CHAR, (int)'A', 0); // 0x41
SendMessage(handle, WM_CHAR, (int)'a', 0); // 0x61
//
SendMessage(handle, WM_CHAR, (int)Keys.Space, 0);
//
SendMessage(handle, WM_KEYDOWN, (int)Keys.Shift, 0);
SendMessage(handle, WM_CHAR, 0x41, 0);
SendMessage(handle, WM_CHAR, (int)Keys.A, 0); // 0x41
SendMessage(handle, WM_CHAR, (int)'A', 0); // 0x41
SendMessage(handle, WM_CHAR, (int)'a', 0); // 0x61
SendMessage(handle, WM_KEYUP, (int)Keys.Shift, 0);
//
次のような出力を書き込むことになっています。
aaa1 AAA1
しかし、このコードは次のように書いています。
AAAa AAAa
なぜこれが起こるのですか?0x41
キーの仮想キーコードです。押さAないShiftと小文字が作成されa
、 [char a
= ] は実際には出力に小文字の「a」を入力せず、このサイトのよう0x61
に Numpad (
VK_NUMPAD1 0x61
テンキーのキー) に 1 を入力します。1
小文字と大文字SendMessage
を他のアプリケーションに送信する方法を知っている人はいますか?