Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi WindowsMessage in UpperCase umwandeln (https://www.delphipraxis.net/77147-windowsmessage-uppercase-umwandeln.html)

beo 15. Sep 2006 10:50


WindowsMessage in UpperCase umwandeln
 
Hallo,

ich habe mir ein Object geschrieben, mit dem ich die StandardBelegung der Tastatur übersteuern kann. Funktioniert so weit auch ganz gut.

Der User soll nun mit einer beliebigen Taste in den UpperCase Modus wechseln können. Mein Problem ist, dass ich nicht weiß, wie ich die WindowsMessage von Lower in Upper umwandeln kann:

Hier ein Auszug:

Application.OnMessage := MyKeyMessage; // Um Nachrichten abzufangen

Delphi-Quellcode:
procedure TKeyHandle.MyKeyMessage(var Msg: TMsg; var Handled: boolean);
begin
  if( msg.message = WM_KEYDOWN ) then
  begin
    if FActive then
    begin
      if Assigned(FOnKeyMessage) then
      begin
        FOnKeyMessage(msg,Handled);
        Handled := true;
        exit;
      end
      else
        KeyConvert( msg, Handled );
    end;
  end;
end;


procedure TKasKeyHandle.KeyConvert( var msg: TMsg; var handle:boolean );
var
  k:TMyKey;
  KeyDown:boolean;
begin
  KeyDown := (msg.lParam shr 31) = 0;

  if FActive and KeyDown then
  begin
    k := GetKeyByCode(msg);


    ....

    if FVorStellKey <> nil then
    begin
       if FVorStellKey.id = SHIFTKEY_ID then // zuvor wurde in der UpperModus gewechselt
            hier möchte ich msg, so ändern, dass aus a -> A wird

   ....
Leider konnte ich weder im Web noch in meinem Lieblingsforum etwas dazu finden.

Gruß Christian

beo 15. Sep 2006 11:53

Re: WindowsMessage in UpperCase umwandeln
 
für alle die es interessiert, ich hab es raus, wie einfach:

wenn ich die Taste für den Upper-Modus abfange, einfach mit SetKeyboardState die Tastur umstellen!

SirThornberry 15. Sep 2006 11:56

Re: WindowsMessage in UpperCase umwandeln
 
kommst du nicht besser einfach die Methode KeyDown bzw. KeyPress zu überschreiben und dort den Key zu wandeln? Ich wäre ganz und gar nicht begeistert wenn ein Programm mit Capslock etc. aktiviert.

beo 15. Sep 2006 12:11

Re: WindowsMessage in UpperCase umwandeln
 
grundsätzlich hast du recht!
Allerdings geht es um das Anbinden von verschieden Kassentasturen, die alle unterschiedlich belegt sind. Mit dieser Technik braucht man die verschiedenen Modelle nicht mehr hardwaremäßig zu programmieren. Ich habe ein einfaches Lernprogramm geschrieben, das die KeyCodes der verschiedenen Tastaturen einfach einaml lernt, und fertig.

Das Programm läuft also nicht einfach auf einem StandardPC!


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 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