Irgendwie so... musst dann noch herausfinden welche IDs die anderen Zahlen haben...
einfach Programm anpassen, dass es falls es nicht die Zahl (als Buchstaben) kennt, die Zahl hinzufügt...
dann einmal das ABC in klein und einmal in groß schreiben.... und noch alles andere, was du haben willst...
Button1 = Hooken (Start)
Button2 = Unhooken (Ende)
kann man aber auch anders machen...
ebenso die Ausgabe in das Textfeld...
Gruß Cid
PS: aber mal ehrlich... schon was von Google gehört? Ich wette die haben da schon ganze Programme dafür als Sourcecode und nicht uralte Schnipsel von vor 2 Jahren oder so...
PPS: Das nächste Mal ruhig mit Version... das sollte jetzt unter Windoof XP mit Delphi 6 laufen... (Rest ist ungetestet)
-------------------------------------------------------------------
So, bisschen umgebaut... aaaaaber der haut alles raus was so passiert... ist ein wenig unschön... musst noch mal filtern, dass er nicht bei jeder Mausbewegung rumnervt... ;D
-------------------------------------------------------------------
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
procedure Memo1KeyPress(Sender: TObject; var Key: Char);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type t_evt = ^EVENTMSG;
var
Form1 : TForm1;
hookhandle : HHOOK;
implementation
{$R *.dfm}
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);begin
createCaret(Memo1.Handle, 0, 8,15);
ShowCaret(Memo1.Handle);
SetCaretBlinktime(1500);
end;
procedure TForm1.FormCreate(Sender: TObject);begin
Button1.Enabled := TRUE;
Button2.Enabled := FALSE;
end;
function JournalCallBackProc(Code: Integer; wParam, lParam: longint): LRESULT;stdcall;
var res : string ;
var x : cardinal ;
var ev : t_evt;
begin
ev := ptr(lParam);
x := ev.paramL ;
res := '['+inttostr(x)+']';//default
if ev.message = 256 then begin
case x of
7745 : res := 'a' ;
//TODO FILL
end;
end;
Form1.Memo1.Text := Form1.Memo1.Text + res ;
end;
procedure TForm1.Button1Click(Sender: TObject);begin
hookhandle := SetWindowsHookEx(WH_JOURNALRECORD, @JournalCallBackProc , Hinstance, 0);
if hookhandle = 0 then begin
memo1.Lines.Add('Hook Failed');
end
else begin
memo1.Lines.Add('Hooked');
Button1.Enabled := FALSE;
Button2.Enabled := TRUE;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if UnhookWindowsHookEx(hookhandle) then begin
memo1.Lines.Add('Unhooked');
Button2.Enabled := FALSE;
Button1.Enabled := TRUE;
end
else begin
memo1.Lines.Add('Unhooked');
end;
end;
end.