Ich versuche gerade einen string an ein Fenster Control zu senden und das via postMessage.
Dazu habe ich folgende Methode aufgestellt.
[DllImport("user32", EntryPoint = "PostMessage")]
public static extern int PostMessage(IntPtr hwnd, int Msg, int wParam, int lParam);
public static void sendControlString(string msg, IntPtr handle)
{
foreach (Char c in msg)
{
PostMessage(handle, WM_KEYDOWN, (int)c, 0);
}
}
Das eigentliche Problem ist, dass immer das Falsche geschickt wird.
Gebe ich zb als String abcdefg ein, so kommt als Ergebnis : 1234567
Außer dem wird der das Numbpad emuliert, das habe ich herausgefunden in dem ich mir den keycode vom keyDown Event des Control angesehen habe.
Kann mir einer sagen wie ich an den richten wert aus einem Char bekomme?
Hallo BangerzZ,
warum verwendest du nicht besser die SendKeys-Klasse?
herbivore
ich denk, du müsstest die TastenCodes als Elemente der Keys-Enumeration senden, keine Chars.
Wie du aus Chars allerdings an die TastenCodes kommst, weiß ich grad auch nix besseres als ein Dictionary anzulegen und befüllen.
Der frühe Apfel fängt den Wurm.
Mit der WinAPI-Funktion VkKeyScan (http://msdn.microsoft.com/en-us/library/ms646329%28v=VS.85%29.aspx) kommt man an die entsprechenden Virtual Keys.
Und zum Einbinden in C# mittels P/Invoke: http://pinvoke.net/default.aspx/user32/VkKeyScan.html
P.S. Die SendKeys-Klasse sendet immer nur an das gerade fokussierte Fenster (evtl. ist das ja nicht gewünscht).
Perfekt danke.
Und ja es geht darum die Eingabe in ein nicht fokussiertes Control zu tätigen.