![]() |
Großbuchstaben (Shift) bei WM_KEYUP
Hallo,
ich muss eine Eingabe in meinem Programm automatisieren - es soll später unbeaufsichtigt laufen. Ich ein Terminal-Fenster muss ich Befehle reinschreiben. Das lasse ich mit Postmessage-WM_KEYUP machen. Doch leider müssen es Großbuchstaben sein. Nun weiß ich nicht, wie man Großbuchstaben sendet. Vorher ein PostMessage-WM_KEYDOWN VK_Shift funktioniert nicht. Es wird trotzdem ein kleiner Buchstabe gesendet. Das Terminal befindet sich in meinem Programm. Habe im Forum schon gesucht und einige gefunden, die das gleiche Problem haben / hatten, aber es stand keine Lösung dabei. Vielen Dank im Voraus |
Re: Großbuchstaben (Shift) bei WM_KEYUP
Vieleicht hilft dir ja die Uppercase Funktion aus der SysUtils. Habe sie aber auch noch nicht selber verwendet. aber in der Beschreibung der Hilfe zu Delphi steht drin, dass sie dein String in Goßbuchstaben umwandelt.
MfG BAMatze |
Re: Großbuchstaben (Shift) bei WM_KEYUP
Jap. Uppercase ist deine Lösung.
|
Re: Großbuchstaben (Shift) bei WM_KEYUP
Hm.. wie soll das Funktionieren :gruebel:
Ich sende mit PostMessage eine Nachricht, die als in Frage kommende Argumente jeweils einen Integer erwartet. Ein "r" würde dann so aussehen:
Delphi-Quellcode:
Wo soll den da die Uppercase-Umwandlung hin?
PostMessage(Memo1.Handle, WM_KEYUP, 82, 0)
|
Re: Großbuchstaben (Shift) bei WM_KEYUP
Zitat:
|
Re: Großbuchstaben (Shift) bei WM_KEYUP
Oh ehrlich?
Also ich benutze diese ![]() Falls mein Post vorhin etwas "böse" klang: Ist nicht so gemeint. Bin nur noch etwas müde von der Nacht :wink: |
Re: Großbuchstaben (Shift) bei WM_KEYUP
Naja sind ja eigentlich nur Überlegungen gewesen. Die Frage ist ja, ob du nicht irgendwie das ganze so machen kannst:
Delphi-Quellcode:
if key = 114 then PostMessage(Memo1.Handle, WM_KEYUP, 82, 0);
|
Re: Großbuchstaben (Shift) bei WM_KEYUP
Ne, irgendwie nicht. Ich finde auch keine Tabelle, in die mich (in der Hinsicht) weiterbringt...
|
Re: Großbuchstaben (Shift) bei WM_KEYUP
Muss es eigentlich direkt eine Postmessage sein?
Habe das in meinem aktuellen Projet für ganze Strings wie folgt gelöst: in Sendender Unit:
Delphi-Quellcode:
und in Empfangender Unit:
with Datenaustausch do
begin dwData := 0; cdData := Length(result) + 1; lpData := result; end; SendMessage(LoaderForm.Handle, WM_COPYDATA, Longint(Handle), Longint(@Datenaustausch));
Delphi-Quellcode:
könnte das eventuell helfen?const Nachricht_erhalten = WM_COPYDATA; ... procedure Nachricht_anzeigen(var MSG: TWMCopyData);message Nachricht_erhalten; ... procedure TLoaderForm.Nachricht_anzeigen(var MSG: TWMCopyData); var Datenaustausch: TDatenaustausch; begin // Die Anzeige der einzelnen Mitteilungen soll jetzt in mehreren Zeilen // unter dem Label "Bitte warte, ..." angezeigt werden. Dies soll in // einer neuen Klasse geschehen, die dynamisch eine bestimmte Anzahl // an Labels erstellt, diese auf der Form Plaziert und wenn mehr Nachrichten // erscheinen, als dynamisch erzeugbare Labels auf der Form dargestellt werden // können, sollen sie chronologisch wieder gelöscht werden. HilfsLabel.Caption := String(PChar(Msg.CopyDataStruct.lpData)); AnzeigeLabel.Left := round((LoaderForm.Width-HilfsLabel.Width)/2); AnzeigeLabel.Caption := HilfsLabel.Caption; Self.Refresh; sleep(200); end; MfG BAMatze PS.: Ist natürlich nicht auf meinem Mist gewachsen sondern von einem Threat hier aus der DP, leider kenne ich den Namen des ursprünglichen Autors der Antwort nicht, also lasse ich den hier mal weg. :dp: |
Re: Großbuchstaben (Shift) bei WM_KEYUP
So, da bin ich wieder.
Ich habe jetzt mal noch Keybd_Event geschaut, da dies öfter im Zusammenhang mit den WM_KEY*-Messages steht. Hier habe ich dann in der CodeLibrary ![]() Tut mir leid, für die Mühe, die du dir so früh morgens schon gemacht hast. Ich bedanke mich trotzdem recht herzlich bei dir. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:12 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