1

私は過去に 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 値を含む) を一致させました。

4

1 に答える 1

2

PostMessageではなく使用する必要があると思いますSendMessage。メッセージが受信者に配信される方法以外はほとんど同じです。

http://msdn.microsoft.com/en-us/library/windows/desktop/ms644944%28v=vs.85%29.aspx

于 2012-10-19T21:12:55.470 に答える