AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Tastendrücke systemweit abfangen

Tastendrücke systemweit abfangen

Ein Thema von Delphi-Noobie · begonnen am 8. Jun 2004 · letzter Beitrag vom 27. Jun 2004
Antwort Antwort
Seite 2 von 2     12
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#11

Re: Tastendrücke systemweit abfangen

  Alt 11. Jun 2004, 19:15
Ein Hook ist grundsätzlich eine DLL, und die hat eben normalerweise kein Fenster, da kann man nix machen.

Aber du könntest auch über RegisterHotKey dir nen HotKey registrieren, und wenn dieser dann aktiviert wird, deaktivierst du ihn kurz, simulierst den Tastendruck, den der HotKey abgefangen hat, und aktivierst den HotKey wieder. Das wäre eine möglichkeit einen Hook zu umgehen.

Eine weitere (aber sehr schlechte) Methode den Hook zu umgehen wäre eine GetAsyncKeyState funktion in verbindung mit einem Timer immerwieder aufzurufen, und checken ob ne Taste gedrückt wurde. Das funktioniert nicht immer so toll, aber es funktioniert, und die eigentliche Anwendung empfängt den Tastendruck immernoch.

ciao, Philipp
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
Delphi-Noobie

Registriert seit: 28. Nov 2003
102 Beiträge
 
#12

Re: Tastendrücke systemweit abfangen

  Alt 12. Jun 2004, 09:33
Ok das hat geklappt aber er nimmt nur alle Buchstaben und Zahlen an aber keine Punkte oder andere Sonderzeichen:
Code:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);

  private
  procedure WMHotKey(var Msg : TWMHotKey); message WM_HOTKEY;
    { Private declarations }
  public
    { Public declarations }
  end;
 const ID_pnt= ord('.');
 const ID_min= ord('-');
 var
  Form1: TForm1;
  ini:Tinifile;
implementation

{$R *.dfm}

procedure TForm1.WMHotKey(var Msg : TWMHotKey);
begin

    if Msg.HotKey = ord('.') then  //<-- solche Sachen macht er nicht
    showmessage('.');
    if Msg.HotKey = ord('-') then
    showmessage('-');
    end;
procedure TForm1.FormCreate(Sender: TObject);
begin
RegisterHotKey(Form1.Handle, ID_pnt, 0, ord('.'));
RegisterHotKey(Form1.Handle, ID_min, 0, ord('-'));
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
UnRegisterHotKey(Form1.Handle, ord('.'));
UnRegisterHotKey(Form1.Handle, ord('-'));
end;

end.
Buchstaben und Zahlen klappen hingegen. Woran liegt das denn?
Wieviel Lösungen hat die Gleichung x^13=1? .... 13!
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#13

Re: Tastendrücke systemweit abfangen

  Alt 12. Jun 2004, 12:02
Das liegt wohl daran, dass sonderzeichen meist aus tastenkombinationen bestehen ...
Die JVCL-Komponente JvAppHotKey macht das ganz nett ... habs noch nicht wirklich getestet, aber sie nimmt auch - oder . an ...
(schaus dir mal an ^^)

Aber wenn du einfach nur alle Tastendrücke loggen willst (wie mir das hier scheint), dann lege ich dir Hooks nahe, da du dann nicht 104 (oder mehr) Hotkeys registrieren musst ...

ciao, Philipp
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#14

Re: Tastendrücke systemweit abfangen

  Alt 12. Jun 2004, 12:04
und übrigens: bei luckies keylogger ist ne lange diskussion hinten am thread dran, die sollte so einiges klären
  Mit Zitat antworten Zitat
RB-Aldi

Registriert seit: 22. Jun 2004
7 Beiträge
 
#15

Re: Tastendrücke systemweit abfangen

  Alt 27. Jun 2004, 14:46
gibt es eine möglichkeit, bei den hotkeys nach Delphi-Noobie's art zwischen keydown und keyup zu unterscheiden?

damit z.b. beim drücken einer taste die medienplayer-komponente einen sound spielt und beim loslassen der taste der player wieder stoppt?

gruß, thomas
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz