PostMessage
と入力してウィンドウに入力しようとしています。私はSendInput
を使用していません。フォーカスがないからです。文字(A
)が入力されていますが、Enter
キーを送信するにはどうすればよいですか?これは私のコードの縮小バージョンです。その実行はEnter
ですが送信されませんか?C#でPostMessageでEnterキーを送信するにはどうすればよいですか?
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool PostMessage(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam);
const int WM_KEYDOWN = 0x100;
const int WM_KEYUP = 0x101;
const Int32 WM_CHAR = 0x0102;
const Int32 VK_RETURN = 0x0D;
const int VK_ENTER = 0x0D;
IntPtr val = new IntPtr((Int32)'A');
PostMessage(WindowHandle, WM_KEYDOWN, (IntPtr)(val - 0x020), new IntPtr(0));
PostMessage(WindowHandle, WM_CHAR, (IntPtr)val, new IntPtr(0));
PostMessage(WindowHandle, WM_KEYUP, (IntPtr)(val - 0x020), new IntPtr(0));
PostMessage(WindowHandle, WM_KEYDOWN, (IntPtr)(val - 0x020), new IntPtr(0));
PostMessage(WindowHandle, VK_RETURN, (IntPtr)val, new IntPtr(0));
PostMessage(WindowHandle, WM_KEYUP, (IntPtr)(val - 0x020), new IntPtr(0));
キーアップ/ダウンメッセージを偽っている点はあまりありません。生成したメッセージのみを送信します。ちょうど2つのWM_CHARメッセージ。 VK_RETURNはメッセージではありません。代わりに、System.Windows.Automationを常に優先します。 –
私はそれのためにウィンドウの焦点を持っている必要があると思いますか? – jamie