Thema: Delphi wndproc geht nicht

Einzelnen Beitrag anzeigen

Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#25

AW: wndproc geht nicht

  Alt 30. Jun 2022, 13:03
Bitte lese Dir ein paar Non-VCL Dokumentationen durch, Michael Puff war ein begeisterter und talentierter Non-VCL Programmierer, seine Resourcen sind immer noch abrufbar.
Die Art und Weise wie Du es versuchst ist .... schräg.

Mein Rat, ich würde die Tastatur-Abfrage in einen Timer schubsen, kleines mini Beispiel:
Delphi-Quellcode:
// global
var
  HID: Integer;
  Msg: TMsg;

// hier eine timer methode für tasten
procedure HotkeyTimer(TimerID, Msg: Uint; dwUser, dw1, dw2: DWord); pascal;
BEGIN
 if (GetKeyState(VK_P) and (1 shl 31)) <> 0) // wurde taste "P" gedrückt
 then
   // mach was wenn P gedrückt wurde.... nur als beispiel
 ;
END;


// hier folgt der hauptaufruf um die klasse und deren objekte zu erschaffen

// nachdem du deine klasse mal ordentlich initialisiert hast und auch nutzt, diese zeile aktiviert einen windows timer der alle 10ms abgerufen wird
HID := TimeSetEvent(10, 0, @HotkeyTimer, 0, TIME_PERIODIC);

// nach diesem Aufruf folgt die Message behandlung, regulär so:
 while(GetMessage(Msg, Handle, 0, 0)) do
  begin
    TranslateMessage(Msg);
    DispatchMessage(Msg);
  end;

// damit wenn der loop beendet ist du die klasse und alle anderen objekte auch wieder freigeben kannst
  TimeKillEvent(HID);
// edit
das obige versetzt die tastatur-abfrage systemweit, also von jedem window aus werden die tasten geprüft und ausgewertet!
Gruß vom KodeZwerg

Geändert von KodeZwerg (30. Jun 2022 um 13:12 Uhr)
  Mit Zitat antworten Zitat