Ich habe eine Bildschirmtastatur mit c # Windows Forms erstellt. Ich benutze Sendkeys.Send()
-Funktion, um die Tastenanschläge zu senden. Alle Buchstaben außer dem Buchstaben i funktionieren gut. Wenn ich den Buchstaben i auf der Tastatur drücke, wenn Microsoft Word geöffnet ist, sendet es Strg + Alt + I und öffnet den Druckdialog. Es ist dasselbe in Notepad ++ auch. Aber es funktioniert gut, wenn ich versuche, Notizblock einzugeben.
In meinem Code sende ich die Schlüssel mit SendKeys.Send(value);
, wobei Wert der Text der Taste ist, die gedrückt wird. Ich bekomme den Text mit folgendem Code:
Irgendwelche Kommentare darüber, warum es nicht richtig funktioniert?
Bearbeiten: Ich habe ein neues Windows-Formular-Projekt mit nur einer Schaltfläche erstellt und der gesamte Code ist darunter. Funktioniert immer noch nicht. Irgendeine Idee würde geschätzt werden.
%Vor%Die überschriebene Funktion verhindert, dass das Formular fokussiert wird. Damit kann ich die Tastenanschläge an die andere Anwendung senden, die den Fokus hat.
Sie rufen nicht die Win32-API-Methode "SetForegroundWindow" auf. Daher sendet Ihr "SendKeys" -Aufruf wahrscheinlich die Schlüssel zu Ihrer App, nicht die Ziel-App wie vorgesehen.
Hier ist ein Beispiel auf MSDN:
Vorgehensweise: Simulieren von Maus- und Tastaturereignissen in Code
Hier ist auch der Code aus dem Beispiel:
%Vor%