Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

SendKeys Tastencodes

64 views
Skip to first unread message

Horst Brand

unread,
Oct 27, 2006, 2:23:09 PM10/27/06
to
Hallo,

ich möchte mit SendKeys ganze Strings an eine andere Applikation schicken.
Bei einfachen Buchstaben ist das kein Problem, bei '%' und '(' aber schon
nicht ganz so einfach., nämlich "+5" und "+8".
Gibt es da kein einfaches Mapping? Oder macht man das etwa ganz anders?
Über den ASCII-Code eines Zeichens und die KeyPad-Tasten sollte sich das
doch verallgemeinern lassen ...
In der Microsoft Visual Studio 2005 Documentation zum Beispiel ist zwar der
Code für einige "Sondertasten" angegeben (zum Beispiel {NumLock} und
{PgUp}), die Tasten des Keypads fehlen aber dort.

Wer kann mir da helfen?

Schönen Gruß

Horst


Horst Brand

unread,
Nov 2, 2006, 8:50:27 AM11/2/06
to
Kennt sich da wirklich keiner mit aus?
Muss ich SendMessageString verwenden? Aber wie?

"Horst Brand" <Brand...@t-online.de> schrieb im Newsbeitrag
news:%23VIKgZf%23GHA...@TK2MSFTNGP03.phx.gbl...

HKSHK

unread,
Nov 2, 2006, 11:06:37 AM11/2/06
to
Sehr geehrter Herr Brand,

warum nicht folgendermaßen:

Dim a As String ="ABC%DEF+{}"
Dim b As String
Dim t As Integer
For t = 1 To a.Length
b = Strings.Mid(a,t,1)

Select Case b

Case "%","+","~","(",")","[","]","{","}"
b="{"& b &"}"

' ... Die anderen Fälle hier einfügen ...

End Select


SendKeys.Send(b)


> In der Microsoft Visual Studio 2005 Documentation zum Beispiel ist
> zwar der Code für einige "Sondertasten" angegeben (zum Beispiel
> {NumLock} und {PgUp}), die Tasten des Keypads fehlen aber dort.

Die Zifferntasten scheinen da wohl den gleichen Code zu haben.
Die anderen Funktionen sind aber gemappt.

Keypad add {ADD}
Keypad subtract {SUBTRACT}
Keypad multiply {MULTIPLY}
Keypad divide {DIVIDE}

Beste Grüße,

HKSHK

Horst Brand

unread,
Nov 3, 2006, 10:04:05 AM11/3/06
to
Vielen Dank!
Habe ich das richtig verstanden, dass ich also zum Beispiel
die Tilde mit SendKeys.Send("{~}") senden kann
und die geschweifte rechte Klammer mit SendKeys.Send("{}}") !?

Was bedeutet "Die Zifferntasten scheinen da wohl den gleichen Code zu
haben"?
Auf der Tastatur macht es doch einen Unterscheid, ob ich die Ziffernasten in
der oberen Reihe oder im Keypad drücke,
zum Beispiel kann ich die Zeichen im ASCII-Code nur über das Keypad
eingeben.

Schönen Gruß

Horst Brand


"HKSHK" <hk...@gmx.net> schrieb im Newsbeitrag
news:454a177b$0$25363$9b62...@news.freenet.de...

HKSHK

unread,
Nov 3, 2006, 10:53:29 AM11/3/06
to
Sehr geehrter Herr Brand,

Horst Brand wrote:
> Vielen Dank!
> Habe ich das richtig verstanden, dass ich also zum Beispiel
> die Tilde mit SendKeys.Send("{~}") senden kann
> und die geschweifte rechte Klammer mit SendKeys.Send("{}}") !?

Ja.

> Was bedeutet "Die Zifferntasten scheinen da wohl den gleichen Code zu
> haben"?

Stimmt. Aber es scheint, daß SendKeys die Zifferntasten des
Nummernblocks nicht als solche unterstützt, sondern sie genauso handhabt
wie die Zifferntasten oberhalb der Buchstaben.

> Auf der Tastatur macht es doch einen Unterscheid, ob ich die
> Ziffernasten in der oberen Reihe oder im Keypad drücke,
> zum Beispiel kann ich die Zeichen im ASCII-Code nur über das Keypad
> eingeben.

Das ist auch nicht unbedingt ein Problem, da sich über
SendKeys.Send(ASCII-Wert) sämtliche ASCII-Zeichen senden lassen.
Auch Unicode ist möglich.

Beachten Sie bitte, daß die Zeichen "%","{", ... auch beim Senden als
ASCII-Wert immer noch die gleiche Sonderbehandlung erfahren.

Beispiele:
SendKeys.Send(223) sendet ein ß (deutsches Sonderzeichen)
SendKeys.Send(64) sendet ein @ (Alt+Ctrl+Q)
SendKeys.Send(1055) sendet ein П (großes kyrillisches Pe)

Beste Grüße,

HKSHK

Horst Brand

unread,
Nov 3, 2006, 1:58:01 PM11/3/06
to
Hallo,

dann ist es doch wohl am einfachsten (für die Codierung),
man sendet jedes Zeichen einzeln mit seinem seinem ASCII-Code, oder?

Schönen Gruß
Horst Brand

"HKSHK" <hk...@gmx.net> schrieb im Newsbeitrag

news:454b65f5$0$2332$9b62...@news.freenet.de...

> SendKeys.Send(1055) sendet ein ? (großes kyrillisches Pe)
>
> Beste Grüße,
>
> HKSHK


HKSHK

unread,
Nov 3, 2006, 3:11:41 PM11/3/06
to
Sehr geehrter Herr Brand,

> dann ist es doch wohl am einfachsten (für die Codierung),
> man sendet jedes Zeichen einzeln mit seinem seinem ASCII-Code, oder?

Letzendlich ist es egal, da die Zeichen mit Sonderbehandlung %,{, ... ja
eh interpretiert werden müssen.

Beste Grüße,

HKSHK

Harald M. Genauck

unread,
Nov 3, 2006, 2:32:44 PM11/3/06
to
Hallo Horst,

> Habe ich das richtig verstanden, dass ich also zum Beispiel
> die Tilde mit SendKeys.Send("{~}") senden kann
> und die geschweifte rechte Klammer mit SendKeys.Send("{}}") !?
>
> Was bedeutet "Die Zifferntasten scheinen da wohl den gleichen Code zu
> haben"?
> Auf der Tastatur macht es doch einen Unterscheid, ob ich die Ziffernasten
> in der oberen Reihe oder im Keypad drücke,
> zum Beispiel kann ich die Zeichen im ASCII-Code nur über das Keypad
> eingeben.

Es werden ja Zeichen gesendet, keine Tastaturcodes. Die Ziffern des
Nummernblocks unterscheiden sich zwar im Tastaturcode, liefern aber nach
der Windows-internen Verarbeitung eben Zeichen. In einem Textfeld /in einer
Textverarbeitung/... kommen ja auch die Ziffernzeichen - egal, über welche
Taste sie erzeugt worden sind.

Insofern ist allerdings die Bezeichnung Send*Keys* tatsächlich irreführend.


Viele Grüße

Harald M. Genauck

ABOUT Visual Basic - das Webmagazin - http://www.aboutvb.de
"visual studio one" - http://www.visualstudio1.de

0 new messages