Ich möchte Key Stroke an ein Programm senden, auch wenn es im Hintergrund läuft. Aber ich kann dies für NOTIZBLOCK wie dies nur tun,Schicke Tastatureingaben an ein Programm, auch wenn es im Hintergrund mit C#
[DllImport("user32.dll")]
protected static extern byte VkKeyScan(char ch);
[DllImport("user32.dll", SetLastError = true)]
protected static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
[DllImport("User32.Dll", EntryPoint = "PostMessageA")]
protected static extern bool PostMessage(IntPtr hWnd, uint msg, int wParam, int lParam);
char Key = // key value to send
IntPtr hWnd = FindWindowEx(_handle, IntPtr.Zero, "edit", null); // _handle is the windows handle of the program (here its notepad)
PostMessage(hWnd, WM_KEYDOWN, VkKeyScan(Key), 0);
aber für alle anderen Anwendungen kann ich nicht Tastenanschläge senden, wenn seine im Hintergrund. Da ich die lpszClass
dieses Programms nicht kenne (ich denke, das ist der UserControl-Name des Schreibbereichs in diesem Programm. Für NotePad ist es "edit"
. Ich fand dieses Surfen Internet).
Für alle anderen Anwendungen, was ich tue ist, holen Sie die Anwendung in den Vordergrund, dann senden Sie den Schlüssel, dann wieder mein Programm Vordergrund. Ich brauche mein Programm immer als Vordergrund ausgeführt werden.
[DllImport("USER32.DLL")]
public static extern bool SetForegroundWindow(IntPtr hWnd);
SetForegroundWindow(_handle); // _handle is the windows handle of the program
System.Threading.Thread.Sleep(50); // Waiting few milliseconds till application coming to foreground.
wsh.SendKeys(Key.ToString(), ref wait); // wsh is WshShellClass wsh= new WshShellClass();
SetForegroundWindow(_mainHandle); // _mainHandle is the windows handle of my application
Aber auf diese Weise nicht funktioniert. einige Tasten werden verpasst und das Programm Vordergrund-> Hintergrund-> Vordergrund-> Hintergrund ...... wie sein Tanzen ...
Wie man Schlüssel zu anderen Anwendungen sendet, wenn es im Hintergrund läuft. oder gibt es eine Möglichkeit/Quelle, um die lpszClass
eines Programms zu finden?
Entschuldigung, wenn ich irgendwelche erforderlichen Informationen verpasst habe. Dies ist eine große Anwendung. Ich habe hier nur erforderliche Teile gepostet. Wenn jemand zusätzliche Informationen benötigt, fragen Sie bitte.
Hunderte von Fragen dazu bei SO bereits, nicht sicher, wie Sie sie verpasst haben. Was auch immer du tust, um den Fokus zurück zu bekommen, tu es nicht. –