Benutzer mit den meisten Antworten
Aus String Tastenfolge senden

Frage
-
Hallo,
ich möchte aus einem String eine Tastenfolge mit System.Windows.Forms.SendKeys.Send(); oder Ähnlichem senden. Mein String beinhaltet dabei alle möglichen Zeichen, auch aus ausländischen Alpabeten:
Bsp:
"Mehrere Wörter mit Sonderzeichen äüö!$()=/\&'-:@µ"
"Satz mit
Zeilenumbruch"
...Wenn ich den String einfach mit SendKeys.Send() ausgebe, so werden ab der 2. Ausgabe eines Strings Fehlerhafte Tasten ausgeben (Getestet in Notepad).
Wie kann meinen String mit Sonderzeichen usw ausgeben?
Danke schonmal für die Antwort!
Mit freundlichen Grüßen,
Reiser
Antworten
-
http://msdn.microsoft.com/de-de/library/system..windows.forms.sendkeys.send(v=VS.80).aspx hast Du beachtet?Volker
- Als Antwort markiert Robert BreitenhoferModerator Freitag, 14. Januar 2011 18:39
-
Hallo Reiser,
Zum Beispiel so:
private void button1_Click(object sender, EventArgs e) { textBox1.Focus(); string ausgabe1 = @"Mehrere Wörter mit Sonderzeichen äüö!$()=/\&'-:@µ"; Sende(ausgabe1); string ausgabe2 = @"Satz mit Zeilenumbruch noch eine Zeile"; Sende(ausgabe2); } private void Sende(string ausgabe) { SendKeys.Send(ausgabe. Replace("+", "{+}").Replace("^", "{^}"). Replace("(", "{(}").Replace(")", "{)}"). Replace("%", "{%}").Replace("~", "{~}"). Replace("\r\n", "\n")); }
Bei SendKeys haben Zeichen wie Plus (+), Zirkumflex (^), Prozent (%), Tilde (~) sowie die runden Klammern ( ) eine gesondert Bedeutung - insofern müsstest Du mit analogen Replace-Befehlen (wie oben) diese in geschweifte Klammern ({}) einschliessen. Das [Replace("\r\n", "\n")] ist z.T. für den Zeilumbruch notwendig.
[SendKeys-Klasse (System.Windows.Forms)]
http://msdn.microsoft.com/de-de/library/system.windows.forms.sendkeys(v=VS.100).aspxWeiterhin sendet SendKeys nur Messages (Meldungen) ggf. an andere Prozesse. Somit gilt die UIPI Sicherheits Einschränkung ab Vista (höher priorisierte Prozesse müssten das erst erlauben etc., oder es funktioniert dann da nicht etc.). SendKeys ist ~normal keine besonders gute Lösung - gut manchmal geht es nicht anders.
ciao Frank- Als Antwort markiert Robert BreitenhoferModerator Freitag, 14. Januar 2011 18:39
-
Hallo Reiser,
Ich kann mir nicht vorstellen, was genau Du vorhast, aber umfangreiche Keys-Folgen an Notepad zu schicken, scheint mir eine etwas umständliche Lösung zu sein.
Lies als erstes die Dokumentation (sehr ernüchternd). SendKeys ist problematisch in der Verwendung, und zeigt zuweilen ein abweichendes Verhalten je nachdem welches Betriebsystem man verwendet.
Käme eine andere Lösung für Dich nicht in Frage (Zwischenablage, Subclassing, Windows-Nachrichten usw.)?Gruß
Marcel- Als Antwort markiert Robert BreitenhoferModerator Freitag, 14. Januar 2011 18:39
Alle Antworten
-
http://msdn.microsoft.com/de-de/library/system..windows.forms.sendkeys.send(v=VS.80).aspx hast Du beachtet?Volker
- Als Antwort markiert Robert BreitenhoferModerator Freitag, 14. Januar 2011 18:39
-
Hallo Reiser,
Zum Beispiel so:
private void button1_Click(object sender, EventArgs e) { textBox1.Focus(); string ausgabe1 = @"Mehrere Wörter mit Sonderzeichen äüö!$()=/\&'-:@µ"; Sende(ausgabe1); string ausgabe2 = @"Satz mit Zeilenumbruch noch eine Zeile"; Sende(ausgabe2); } private void Sende(string ausgabe) { SendKeys.Send(ausgabe. Replace("+", "{+}").Replace("^", "{^}"). Replace("(", "{(}").Replace(")", "{)}"). Replace("%", "{%}").Replace("~", "{~}"). Replace("\r\n", "\n")); }
Bei SendKeys haben Zeichen wie Plus (+), Zirkumflex (^), Prozent (%), Tilde (~) sowie die runden Klammern ( ) eine gesondert Bedeutung - insofern müsstest Du mit analogen Replace-Befehlen (wie oben) diese in geschweifte Klammern ({}) einschliessen. Das [Replace("\r\n", "\n")] ist z.T. für den Zeilumbruch notwendig.
[SendKeys-Klasse (System.Windows.Forms)]
http://msdn.microsoft.com/de-de/library/system.windows.forms.sendkeys(v=VS.100).aspxWeiterhin sendet SendKeys nur Messages (Meldungen) ggf. an andere Prozesse. Somit gilt die UIPI Sicherheits Einschränkung ab Vista (höher priorisierte Prozesse müssten das erst erlauben etc., oder es funktioniert dann da nicht etc.). SendKeys ist ~normal keine besonders gute Lösung - gut manchmal geht es nicht anders.
ciao Frank- Als Antwort markiert Robert BreitenhoferModerator Freitag, 14. Januar 2011 18:39
-
Hallo Reiser,
Ich kann mir nicht vorstellen, was genau Du vorhast, aber umfangreiche Keys-Folgen an Notepad zu schicken, scheint mir eine etwas umständliche Lösung zu sein.
Lies als erstes die Dokumentation (sehr ernüchternd). SendKeys ist problematisch in der Verwendung, und zeigt zuweilen ein abweichendes Verhalten je nachdem welches Betriebsystem man verwendet.
Käme eine andere Lösung für Dich nicht in Frage (Zwischenablage, Subclassing, Windows-Nachrichten usw.)?Gruß
Marcel- Als Antwort markiert Robert BreitenhoferModerator Freitag, 14. Januar 2011 18:39