Sende den Buchstaben 'i' mit SendKeys

9

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:

%Vor%

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.

    
Ozgur Dogus 26.01.2012, 09:25
quelle

2 Antworten

1

Zwei Alternativen:

1- Simuliert einen Tastendruck, siehe Ссылка

Beispiel:

%Vor%

2- Sendet eine Taste an ein Fenster und drückt die Taste für x Sekunden

%Vor%     
Marcos 31.01.2012, 18:50
quelle
0

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%     
Chris Pietschmann 26.01.2012 14:59
quelle

Tags und Links