AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Tastendruck im Hintergrund registrieren und Loggen
Thema durchsuchen
Ansicht
Themen-Optionen

Tastendruck im Hintergrund registrieren und Loggen

Ein Thema von T.E. · begonnen am 31. Jan 2010 · letzter Beitrag vom 1. Jun 2012
Antwort Antwort
Seite 1 von 3  1 23      
T.E.

Registriert seit: 27. Mai 2007
Ort: Hamburg
284 Beiträge
 
Delphi XE2 Enterprise
 
#1

Tastendruck im Hintergrund registrieren und Loggen

  Alt 31. Jan 2010, 14:42
Moin moin liebe DPler,

ich habe folgendes Problem: und zwar haben wir in der Firma USB Panels auf denen die F1 bis F24 Tasten (also alle Funktionstasten)ausgelagert sind. Nun haben wir vor kurzem festgestellt das es hin und wieder mal einzelne Tasten nicht funktionieren.

Um einen möglichen Fehler zu finden bzw. auszuschließen soll jetzt also ein Keylogger her, der im Hintergrund läuft und alle Tastendrücke (der F Tasten) mit Zeit mit loggt.
Soweit so gut. Grundsätzlich habe ic hdas auch aber ich habe noch dasProblem: das meien Anwendung dazu im Vordergrund sein muss, damit sie auf den Tastendruck reagiert... und ich konnte noch keine Lösung dafür finden
Hat da jemand einen Tipp oder Ratschlag?

Danke!
Gruß Torben
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Tastendruck im Hintergrund registrieren und Loggen

  Alt 31. Jan 2010, 14:44
Wie kann man mit einem Keylogger nicht funktionierende Tasten loggen?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#3

Re: Tastendruck im Hintergrund registrieren und Loggen

  Alt 31. Jan 2010, 14:45
Hallo

Ein Keyboard Hook könnte eine Lösung sein.
Thomas
  Mit Zitat antworten Zitat
T.E.

Registriert seit: 27. Mai 2007
Ort: Hamburg
284 Beiträge
 
Delphi XE2 Enterprise
 
#4

Re: Tastendruck im Hintergrund registrieren und Loggen

  Alt 31. Jan 2010, 15:06
Ein Keylogger/Keyhook kann in der Hinsicht nützlich sein bzw. helfen da immer vier tasten zu einander gehören und wenn dann eine Taste mehrfach gerückt wird, bzw. die "Reihenfolge" durcheinander kommt dann hat man zumindest schon mal einen Anhaltspunkt. ZUmal das ganze noch mit einem Counter verbunden wird.

edit: ganz doofe Frage: Worin besteht der Unterschied zwischen einem Keylogger und eineme Keyhook?
Gruß Torben
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#5

Re: Tastendruck im Hintergrund registrieren und Loggen

  Alt 31. Jan 2010, 15:22
Zitat von T.E.:
edit: ganz doofe Frage: Worin besteht der Unterschied zwischen einem Keylogger und eineme Keyhook?
Einen Keylogger kann man mit einem Hook machen, ein Hook kann man auch für anderes einsetzen.
Mit einem Hook kannst du die Tasten global abfangen.
Thomas
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Tastendruck im Hintergrund registrieren und Loggen

  Alt 31. Jan 2010, 15:25
Oder anders gesagt: der Hook ist das wie, und der Logger das was
Markus Kinzler
  Mit Zitat antworten Zitat
T.E.

Registriert seit: 27. Mai 2007
Ort: Hamburg
284 Beiträge
 
Delphi XE2 Enterprise
 
#7

Re: Tastendruck im Hintergrund registrieren und Loggen

  Alt 31. Jan 2010, 15:39
ah gut....
Danke für die Tipps... werd mir dann wohl mal das Hook Tutorial vom DelphiTreff anschauen
Gruß Torben
  Mit Zitat antworten Zitat
T.E.

Registriert seit: 27. Mai 2007
Ort: Hamburg
284 Beiträge
 
Delphi XE2 Enterprise
 
#8

Re: Tastendruck im Hintergrund registrieren und Loggen

  Alt 10. Feb 2010, 20:20
So nachem ich mich jetzt schon etwas mit Hooks auseinandergesetzt habe, jetzt doch noch mal eine Frage:
Ich habe folgende Funktion, die aufgerufen wird, was ich jetzt noch nicht so ganz gerafft habe sind die folgenden Punkte:
1. Wieso wird die gedrückte Taste viermal eingetragen, bzw. warum wird bei Funktionstasten nicht F1 etc angezeigt, sondern z, w, etc.?
und 2. wie kann ich daraus jetzt ein Logfile mit Datum und Uhrzeit machen? (Mein Versuch mit WriteLog(Inttostr(lParam)); ist kläglich an eiskaltem schweigen gescheitert...)
Delphi-Quellcode:
function KeyboardHookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
var
  sizewritten, hFile: LongWord;
begin
  Result := CallNextHookEx(HookHandle, nCode, wParam, lParam);
  case nCode < 0 of
    TRUE: exit;

    FALSE:
      begin
        hFile := CreateFile('C:\LogFile.log', GENERIC_WRITE or GENERIC_READ, 0, nil, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
        if hFile <> INVALID_HANDLE_VALUE then
        try
          SetFilePointer(hFile, 0, nil, FILE_END);
          //WriteFile(hFile, lParam, sizeof(lParam), sizewritten, nil);
          WriteFile(hFile, wParam, sizeof(wParam), sizewritten, nil);
        finally
          CloseHandle(hFile);
        end;
      end;
  end;
end;
Besten Dank im voraus!!
Gruß Torben
  Mit Zitat antworten Zitat
Astat

Registriert seit: 2. Dez 2009
Ort: München
320 Beiträge
 
Lazarus
 
#9

Re: Tastendruck im Hintergrund registrieren und Loggen

  Alt 10. Feb 2010, 23:38
Hallo T.E., ich hoffe nicht, dass ich mal das Teil in einer Signatur eines Virenscanners finden werde!!

Delphi-Quellcode:

function KeyboardHookProc(code: Integer; wparam: WPARAM;
  lParam: LPARAM): LResult; stdcall;
var
  LastKey: Char;
  KeyState: TKeyboardState;
  KeyboardLayout: HKL;
  Key: Word;
begin
  Result := CallNextHookEx(HookHandle, Code, wParam, lParam);
  if Code < 0 then Exit
  else begin
    KeyboardLayout := GetKeyboardLayout(0);
    GetKeyboardState(KeyState);
    if ToAsciiEx(wParam, MapVirtualKeyEx(wParam, 2, KeyboardLayout), KeyState,
      @LastKey, 0, KeyboardLayout) > 0 then Key := Ord(LastKey)
    else
      Key := wParam;
    if (lParam and $80000000) = 0 then
      if not (wParam in [16, 17, 18]) then
        PostMessage(_hwndTarget, WM_USER + 8888, Key, GetActiveWindow);
  end;
end;


//-- WndProc der Empfänger Application
procedure TForm1.WndProc(var message: TMessage);
var
  sStr: String;
begin
  if message.Msg = WM_USER + 8888 then begin // KeyHook Nachricht
    case message.wParam of
      VK_BACK : sStr := 'VK_BACK';
      VK_TAB : sStr := 'VK_TAB';
      VK_CLEAR : sStr := 'VK_CLEAR';
      VK_RETURN : sStr := 'VK_RETURN';
      VK_SHIFT : sStr := 'VK_SHIFT';
      VK_CONTROL : sStr := 'VK_CONTROL';
      VK_MENU : sStr := 'VK_MENU';
      VK_PAUSE : sStr := 'VK_PAUSE';
      VK_CAPITAL : sStr := 'VK_CAPITAL';
      VK_NUMLOCK : sStr := 'VK_NUMLOCK';
    else
      sStr := string(Chr(message.wParam));
    end;
    WriterLog(time + sStr);
  end;
  inherited WndProc(message);
end;
lg. Astat
Lanthan Astat
06810110811210410503210511511603209711003210010110 9032084097103
03211611111604403209711003210010110903210010510103 2108101116122
11610103209010110510810103206711110010103210511003 2068101108112
10410503210310111509910411410510109810111003211910 5114100046
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: Tastendruck im Hintergrund registrieren und Loggen

  Alt 11. Feb 2010, 07:27
Muss ein globaler Keyboard-Hook nicht in einer DLL liegen?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 08:57 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