Ich versuche, eine Eingabe in ein Fenster mit PostMessage
zu senden. Ich verwende nicht SendInput
, weil es nicht im Fokus ist. Ich habe Zeichen (A
) eingegeben, aber wie sende ich den Schlüssel Enter
? Dies ist die gekürzte Version meines Codes. Es läuft aber Enter
wird nicht gesendet?Wie sende ich Enter-Taste mit PostMessage in C#?
[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));
Es gibt nicht viel Sinn, die keyup/down Nachrichten zu fälschen, nur die Nachricht zu senden, die sie generiert haben. Nur die zwei WM_CHAR Nachrichten. VK_RETURN ist keine Nachricht. Immer bevorzugen Sie stattdessen System.Windows.Automation. –
Ich glaube, Sie müssen Fenster Fokus dafür haben? – jamie