AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

KeyLogger

Ein Thema von Luckie · begonnen am 19. Aug 2003 · letzter Beitrag vom 16. Jul 2010
 
daniel-volk

Registriert seit: 16. Jul 2003
170 Beiträge
 
Delphi 6 Enterprise
 
#11

Re: KeyLogger

  Alt 11. Sep 2003, 13:55
Danke erst einmal für deine Antwort. Aber ich bin (leider) praktisch nur das Programmieren in Units gewohnt. Dennoch hab ich mal mein Bestes versucht und die (meiner Meinung nach) wichtigen Teile aus Luckie's Projekt in meins gestopft.
Wie schaffe ich es jetzt aber, dass die Sachen auch in meiner Unit1 im Memo-Feld erscheinen? Soll ich dafür einen Timer bauen, der ständig irgendwie die Windows Message WM_KEYBOARD_HOOK abfragt? Oder geht das eleganter?
Zitat:
Diese fängst du in deiner WndProc ab und im wParam der Message hast du dann das Zeichen drin stehen.
Das hört sich irgendwie sehr kompliziert an. Kann mir das mal jemand erklären, wie ich das zu verstehen hab?

Mein Projekt-Quellcode (der viel von Luckie enthält) sieht bis jetzt jedenfalls so aus:
Delphi-Quellcode:
program Project2;

uses
  Forms,
  Unit1 in 'Unit1.pas{Form1}, windows, messages;

const
  WM_KEYBOARD_HOOK = WM_USER + 52012;
  IDC_EDTLOGGER = 102;

var
  WndTitleOld: string = '';

function CreateHook(hWnd: HWND; ShiftKeys: Boolean): Boolean; stdcall; external 'KBHook.dll';
function DeleteHook: Boolean; stdcall; external 'KBHook.dll';


{$R *.res}

function dlgfunc(hDlg: hWnd; uMsg: dword; wParam: wParam; lParam: lParam): bool;
  stdcall;
var
  MyFont: HFONT;
  s: string;
  TextLength: Integer;
  Buffer: PChar;
  EditText: string;
  WndTitle: array[0..255] of Char;

begin
  result := true;
  case uMsg of
    WM_KEYBOARD_HOOK:
      begin
        TextLength := SendDlgItemMessage(hDlg, IDC_EDTLOGGER, WM_GETTEXTLENGTH,
          0, 0);
        GetMem(Buffer, TextLength + 2);
        try
          SendDlgItemMessage(hDlg, IDC_EDTLOGGER, WM_GETTEXT, TextLength + 2,
            Integer(Buffer));
          case wParam of
            VK_RETURN: EditText := string(Buffer) + #13#10;
            VK_BACK:
              begin
                EditText := string(Buffer);
                Delete(EditText, length(EditText), 1);
              end;
            VK_CONTROL, VK_MENU, VK_SHIFT, VK_CAPITAL: EditText :=
              string(Buffer);
          else
            EditText := string(Buffer) + string(Chr(wParam));
          end;
          GetWindowText(lParam, @WndTitle, SizeOf(WndTitle));
          if WndTitleOld <> string(WndTitle) then
          begin
            Delete(EditText, length(EditText), 1);
            EditText := EditText + #13#10 + '[' + string(WndTitle) + ']' + #13#10
              + string(Chr(wParam));
            WndTitleOld := string(WndTitle);
          end;
          SendDlgItemMessage(hDlg, IDC_EDTLOGGER, WM_SETTEXT, 0,
            Integer(@EditText[1]));
        finally
          FreeMem(Buffer);
        end;
      end;
  else
    result := false;
  end;
end;

begin
  CreateHook(Application.Handle,true);
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
  DeleteHook;
end.
Sorry für die vielen dummen Fragen, aber ich programmiere noch nicht sehr lange und hab daher z.T. Probleme manche überaus komplexen Prozeduren etc zu verstehen
Aber ich bemühe mich zumindest, alles so gut es geht zu verstehen

Danke!
  Mit Zitat antworten Zitat
 


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 19:32 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