[Delphi] Druck-Taste abfangen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Smokers, 16. September 2007 .

Schlagworte:
  1. 16. September 2007
    Druck-Taste abfangen

    Also folgendes Problem, ich will ein Programm schreiben indem die "Druck-Taste" per
    OnKeyPress Event abgefangen wird.

    Ich bekomme ja ziemlich viele Tasten per keychar ausgelesen und ausgegeben,
    allerdings bekomme ich keiner der oberen Tasten dort angesprochen.

    Hat dort jemand zufällig eine Ahnung wie ich dieses Event abgreifen kann?
     
  2. 16. September 2007
    AW: Druck-Taste abfangen

    Code:
    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
     Shift: TShiftState);
    begin
     if key = VK_PRINT then 
     begin
     ShowMessage('LOLOLOLWTF?');
     end;
    end;
    
    
     
  3. 16. September 2007
    AW: Druck-Taste abfangen

    Jau und genau da passiert GARNICHTS ... ^^°
    ich kann die Ruck taste drücken wie ich will... da passiert nix

    Es funktioniert sogut wie bei ALLEN tasten , nur nicht bei der Druck-taste
     
  4. 16. September 2007
    AW: Druck-Taste abfangen

    Dann wird aber auch jedesmal ein Screenshot von Windows gemacht xD
     
  5. 16. September 2007
    AW: Druck-Taste abfangen

    Jo kann ja , os mir pups , allerdings will ich da eine funktionaliät drauf legen...
    und da komm ich halt nicht hin wenn ich die Taste nicht "belgen" kann
     
  6. 16. September 2007
    AW: Druck-Taste abfangen

    hab gerade auch mal geguckt scheint echt nicht so einfach zu gehen vermutte mal das es an der windows screenshot funktion liegt das man die tastertur hooken muss dann sollte es gehen
     
  7. 16. September 2007
    AW: Druck-Taste abfangen

    Sollte mit der HotKey-Klasse funktionieren.. Hooks wären zu aufwendig.
     
  8. 16. September 2007
    AW: Druck-Taste abfangen

    Moin

    Beim KeyDown-Event hat Key bei der Druck Taste den Wert 19.
    Also:
    Code:
    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
     Shift: TShiftState);
    begin
    
    if key = 19 then {Dein Code};
    end;
    Beim KeyPress-Event bin ich noch nicht drauf gekommen.....

    Greetz
     
  9. 16. September 2007
    AW: Druck-Taste abfangen

    Ich hab es grade mal in VB probiert und da geht es mit VK_PRINT nicht, mit VK_SNAPSHOT aber schon.
     
  10. 16. September 2007
    AW: Druck-Taste abfangen

    Ist ja die selbe Schnittstelle.. sollte in Delphi dann auch gehen.
     
  11. 16. September 2007
    AW: Druck-Taste abfangen

    geht leider nicht k-ni versuch mal die werte auszulesen egal welche taste du drückst der zeigt dir den wert nur bei der druck taste nicht
     
  12. 16. September 2007
    AW: Druck-Taste abfangen

    Beim KeyDown-Event ist es der Wert 19,
    *ta da*
    was vk_pause entspricht!!!!!!!!

    Beim KeyPress-Event enthält Key leider nur die Char...
    Da die Druck-Taste kein Zeichen darstellt, wüsst ich nicht wie mans verarbeiten sollte.....

    Aber KeyDown müsste reichen


    Edit: Ups.....thx@Ktm123
    Sry........mit den Tasten durcheinander gekommen ^^
     
  13. 16. September 2007
    AW: Druck-Taste abfangen

    Universelle Lösung die wirklich *jede* Taste abfängt: LowLevel-Kayboard-Hook.

    Klick!
     
  14. 16. September 2007
    AW: Druck-Taste abfangen

    verdammt ich bin Delphi -Anfänger... machts nicht so kompliziert...
    KeyHook ..... wtf omg ^^°°°°
     
  15. 16. September 2007
    AW: Druck-Taste abfangen

    Kann selber kein Delphi, aber hab folgendes bei Google gefunden:

    Code:
    function KeyPressed(Key: Integer): Boolean
    begin
     Result:=GetKeyState(Key)<0;
    end;
    Wenn du jetz diese Funktion mit VK_SNAPSHOT (siehe 1. Seite, mein 1. Post^^) aufrufst, gibt die Funktion TRUE zurück, wenn die Taste gedrückt ist und FALSE, wenn nicht.
     
  16. 16. September 2007
    AW: Druck-Taste abfangen

    kann ja sein, dass VK_PAUSE den wert 19 hat, aber 1. geht es hier nicht um die pause-taste und zweitens wird der code im OnKeyDown- ereigniss bei der Druck taste garnicht ausgeführt....
     
  17. 16. September 2007
    AW: Druck-Taste abfangen

    Jup
    asdrexit hatte von anfang an Recht.......
    Hotkey funzt......
    Code:
    const ID = $FF;
    
    //In den KlassenSachen.....
    private
    procedure WMHotKey(var Msg: TMessage); Message WM_HOTKEY;
    
    //In der Implementierung
    procedure TForm1.WMHotKey(Var Msg: TMessage);
    begin
     case Msg.WParam of
     ID: {Dein Code};
    
     end;
     inherited;
    end;
    
    //Und beim Erstellen des Forms
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    RegisterHotKey(Form1.Handle, ID, 0, vk_snapshot);
    
    end;
    Zur Erklärung:
    Beim Erstellen des Forms wird eben Hotkey registriert, der auch gilt, wenn dein Form nicht aktiv ist.

    Wenn der Hotkey gedrückt wird, dann schickt Windoof eine Botschaft(Message) and dein Programm,
    welche du mit dem Procedure WMHotKey abfängst....

    @Gibbon: So hats bei mir nicht gefunzt.......
     
  18. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.