2016-06-16 8 views
1

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)); 
+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. –

+0

Ich glaube, Sie müssen Fenster Fokus dafür haben? – jamie

Antwort

2

Ich denke, Sie senden die Eingabe falsch. Versuche dies.

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, new IntPtr(VK_RETURN), new IntPtr(0)); 
PostMessage(WindowHandle, WM_KEYUP, new IntPtr(VK_RETURN), new IntPtr(0)); 
+0

Ich bekomme eine Fehlermeldung "kann nicht von int in System.intPrt konvertieren", wenn ich das tue tut mir leid – jamie

+0

Geben Sie das jetzt eine Chance, tut mir leid! – bkribbs

+0

@jamie Hat das geholfen? – bkribbs