Доброго времени суток. Сабж. Я упростил код(создал приложение и добавил неработающий в вин7 код).
Вот код:
Код:
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
FHookStarted : Boolean; //переменая что отвечает включен перехватчик или нет
record1,play :boolean; // переменые что отвечает за проигрывание или запись
old:integer;
f:file; //наш временый файл
public
{ Public declarations }
end;
var
Form1: TForm1;
JHook: THandle;
implementation
{$R *.dfm}
function JournalProc(Code, wParam: Integer; var EventStrut: TEventMsg): Integer; stdcall;
var
x,y,ev,t: integer;
begin
Result := CallNextHookEx(JHook, Code, wParam, Longint(@EventStrut));
if Code < 0 then Exit;
if Code = HC_SYSMODALON then Exit;
if Code = HC_ACTION then
begin
t:=GetCurrentTime-Form1.old;
Form1.old:=GetCurrentTime;
case EventStrut.message of
WM_LBUTTONUP : ev:=1;
WM_LBUTTONDOWN: ev:=2;
WM_RBUTTONDOWN: ev:=3;
WM_RBUTTONUP : ev:=4;
WM_MOUSEMOVE : ev:=5;
else ev:=0; end;
if (ev>=0) and (ev<=5) then
begin
x:=EventStrut.paramL;
y:=EventStrut.paramH;
Form1.Memo1.Lines.Add(IntToStr(ev));
Form1.Memo1.Lines.Add(IntToStr(x));
Form1.Memo1.Lines.Add(IntToStr(y));
Form1.Memo1.Lines.Add(IntToStr(t));
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
JHook := SetWindowsHookEx(WH_JOURNALRECORD, @JournalProc, hInstance, 0);
record1:=true;
if SetWindowsHook(WH_JOURNALRECORD, @JournalProc) > 0
then
FHookStarted := True
else
begin
ShowMessage('Невозможно включить запись');
end;
end;
Должно быть так: все движения и щелчки мыши перекидываются в мемо. В WinXp так и есть, в Win7 пишет ShowMessage('Невозможно включить запись');
Googleние ничего мне не дало. Зарегистрировался здесь ради этого... Я уже не знаю что думать. Помогите пожалуйста.
Заранее спасибо за потраченное на меня время.
----------------------------------------------
Возможно есть другой подход, который позволит записывать все действия мыши. Если вдруг кто подумает что это для трояна и/или другого вредоносного ПО, то это не так. Просто хочу написать для своего клана программку, которая будет автоматизировать некоторые действия в игре... Она, точнее уже почти написана.... Просто с моим переходом на вин7 она перестала работать.
P.S.: Windows 7 x86 (32 bit)