私は過去に WIN32API 呼び出しを使用して、問題なくキーストロークをシミュレートしました。今でも、表面的なレベルでは、うまくいっているように見えます。Win32 SendMessage 呼び出しを使用して、WM_KEYDOWN、WM_CHAR、WM_KEYUP メッセージをメモ帳のインスタンスに送信しています。
案の定、送信したものはすべてメモ帳に表示されます。
ただし、Spy++ を使用してメッセージを検査している間。送信したキーストロークが、実際に入力したキーや、Windows の組み込みのスクリーン キーボードを使用して作成したキーとは著しく異なることに気付きました。
Spy++ では、単一の WM_KEYDOWN で 2 つの行が生成されます。
<001> 00234 S WM_KEYDOWN nVirtKey:'W'....
<002> 00234 R WM_KEYDOWN
実際に W キーを押す (または OnScreenKeyboard を使用する) と、1 行しか生成されません。
<003> 00234 P WM_KEYDOWN nVirtKey:'W'...
これらのメッセージを展開すると、「S」は送信済み、R は「受信済み」、P は「投稿済み」を表していることがわかります。
プログラムでキーボード入力をより正確にシミュレートする方法を誰か教えてもらえますか? メッセージの残りの部分 (lParam 値を含む) を一致させました。