![]() |
PostMessage - Wert als Hexadezimalzahl übergeben
Hi,
ich versuche gerade einen Text in ein Feld einzugeben, diesen dann auslesen zu lassen und dann umzuwandeln damit ich ihn per PostMessage verschicken kann. Nun funktioniert das aber nicht so ganz.
Delphi-Quellcode:
Damit ich den String str verschicken kann muss ich ihn zuerst umwandeln.
var s:integer;
... s:=strtoint('$'+IntToHex(Ord(str[i]),2)); PostMessage(h, wm_KeyDown, s,0); Also nehm ich den 1. Buchstaben, z.B. A, und wandle ihn um auf $41. Dadurch, dass $41 dann aber ein String ist, muss ich ihn in einen Integer umwandeln da ja wparam vom Typ integer ist. Beim konvertieren wird dann $41 aber gleich umgewandelt wodurch ein anderes Symbol und nicht das A verschickt wird. Hat jemand ne Ahnung und kann mir bitte helfen? Mfg PatrickB |
Re: PostMessage - Wert als Hexadezimalzahl übergeben
Ord(str[i]) genügt völlig. Du musst aber sicherstellen, dass in str nur Großbuchstaben stehen.
|
Re: PostMessage - Wert als Hexadezimalzahl übergeben
Und wenn ich aber auch Kleinbuchstaben verschicken will?
Und Ord() liefert ja nur den einzelnen Buchstaben. Muss man das für PostMessage nicht umwandeln? |
Re: PostMessage - Wert als Hexadezimalzahl übergeben
Zitat:
erst mal zurück auf Anfang: ein 32bit-Integer-Wert besteht aus 4 Bytes, du kannst also max 4 Buchstaben hineinpacken und verschicken. Von String keine Rede. Reicht dir das? (Gross/klein spielt dabei keine Rolle) Gruss Reinhard |
Re: PostMessage - Wert als Hexadezimalzahl übergeben
WM_KEYDOWN ist keine benutzerdefinierte Nachricht. Windows erwartet einen virtual key code, und die sind für Großbuchstaben nunmal Ord('A')-Ord('Z').
Der von Ord zurückgegebene Wert wird übrigens nicht besser, wenn du ihn mit Inttohex in einen String und dann mit StrToInt wieder zurückwandelst. :wink: WM_KEYDOWN sagt nur, dass eine Taste gedrückt wurde - ob das in einem Groß- oder einem Kleinbuchstaben resultiert, entscheidet das Programm selbst (mit TranslateMessage). |
Re: PostMessage - Wert als Hexadezimalzahl übergeben
Okay, jetzt klappts.
Und es gibt ja auch noch nen Befehl der simuliert, dass die Shift-Taste gedrückt ist. Dann muss ich ja vor nem Großbuchstaben einfach nur diesen Befehl einfügen, dann müsste es ja klappen =) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz