Pessoal to usando uma funcao para capturar as coordenadas do mouse. Mas
estou com um problema, ela só captura as coordenadas se o mouse estiver
em movimento. To alimentando um memo e preciso que mesmo com o mouse
parado ele continue recebendo os valores da posicao, pq depois to
colocando o mouse pra executar todo o trajeto. Pensei em colocar um
ttimer mas nao to sabendo como jogar esta funcao la pra dentro.
To chamando ela assim.
if FHookStarted then
begin
ShowMessage('Mouse is already being Journaled, can not restart');
Exit;
end;
JHook := SetWindowsHookEx(WH_JOURNALRECORD, @JournalProc, hInstance, 0);
{SetWindowsHookEx starts the Hook }
if JHook > 0 then
begin
FHookStarted := True;
end
else
//FHookStarted := True;
ShowMessage('No Journal Hook availible');
end;
Segue a funcao.
function JournalProc(Code, wParam: Integer; var EventStrut: TEventMsg):
Integer; stdcall;
var
Char1: PChar;
b1x,b1y,b2x,b2y,x,y: string;
i:integer;
begin
{this is the JournalRecordProc}
Result := CallNextHookEx(JHook, Code, wParam, Longint(@EventStrut));
{the CallNextHookEX is not really needed for journal hook since it it not
really in a hook chain, but it's standard for a Hook}
if Code < 0 then Exit;
{you should cancel operation if you get HC_SYSMODALON}
if Code = HC_SYSMODALON then Exit;
if Code = HC_ACTION then
begin
{
The lParam parameter contains a pointer to a TEventMsg
structure containing information on
the message removed from the system message queue.
}
x := '';
y := '';
i:=0;
SetLength(lArrayx, 0);
if (EventStrut.message= WM_MOUSEMOVE) then
begin
x := 'move'+IntToStr(EventStrut.paramL);
y := 'move'+IntToStr(EventStrut.paramH);
end;
Form1.Memox.Lines.Add(x+','+y);
end;
end;
--
Att.
Maycon Sanches Amaro
Analista de Sistemas Jr.
Source do Brasil LTDA
Phone: +55-19-3847-7220
Fax: +55-19-3847-7269
Cel: +55-19-7803-1527