Ver Mensaje Individual
  #1  
Antiguo 22-06-2016
Ripoll1021 Ripoll1021 is offline
Registrado
 
Registrado: jul 2008
Posts: 5
Reputación: 0
Ripoll1021 Va por buen camino
KeyLogger Ayuda

Buenas a todos, tengo un problema con mi aplicacion realizada en lazarus. En algunas PC funciona y en otras no, no se si me falta un uses o algo estoy, perdido y estancado por el momento.

La aplicacion la uso para detectar la lectura de un codigo de barra de otra aplicacion Web (no desarrollada por mi) y busca en logs si el Codigo de barra es correcto.

Podrian dar una mano, he intentando tambien hacer la captura de la lectura con un Timer, pero no alcanza a registrar todos los numeros del codigo de barra. Tenia puesto de intervalo 1.

No uso una dll para el hook, porque todavia soy principiante, he intentado usar algunas que estan dando vueltas por internet, pero se me complico al llevarlo a Lazarus.

Gracias de antemano

Código:
unit ulala;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, eventlog, FileUtil, Forms, Controls, Graphics, Dialogs,
  StdCtrls, Buttons, ExtCtrls, Menus, UFail, uok, Windows, Messages, Variants;


var
  MainForm: TMainForm;
  MainHook : HHOOK;     

...

function KeyboardHook(Code: Integer; wParam : WPARAM;
  lParam : LPARAM): Longint; stdcall;
var
  Buffer : TEventMsg;

  procedure TranslateKey(Key : Byte);
  begin
    if (Key <> VK_LBUTTON) and (Key <> VK_RBUTTON) then
    begin
      GetWindowText(GetForegroundWindow, Wnd2, SizeOf(Wnd2));
      if wnd1 <> wnd2 then
    begin
      Wnd1 := Wnd2;
    end;
    end;
    with MainForm do
    begin
      case Key of
        VK_NUMPAD0     :    eImei.text := eImei.text + '0';
        VK_NUMPAD1     :    eImei.text := eImei.text + '1';
        VK_NUMPAD2     :    eImei.text := eImei.text + '2';
        VK_NUMPAD3     :    eImei.text := eImei.text + '3';
        VK_NUMPAD4     :    eImei.text := eImei.text + '4';
        VK_NUMPAD5     :    eImei.text := eImei.text + '5';
        VK_NUMPAD6     :    eImei.text := eImei.text + '6';
        VK_NUMPAD7     :    eImei.text := eImei.text + '7';
        VK_NUMPAD8     :    eImei.text := eImei.text + '8';
        VK_NUMPAD9     :    eImei.text := eImei.text + '9';
        48             :    eImei.text := eImei.text + '0';
        49             :    eImei.text := eImei.text + '1';
        50             :    eImei.text := eImei.text + '2';
        51             :    eImei.text := eImei.text + '3';
        52             :    eImei.text := eImei.text + '4';
        53             :    eImei.text := eImei.text + '5';
        54             :    eImei.text := eImei.text + '6';
        55             :    eImei.text := eImei.text + '7';
        56             :    eImei.text := eImei.text + '8';
        57             :    eImei.text := eImei.text + '9';
      end;
    end;
  end;

begin
  Result := 0;
  Buffer := PEventMsg(lParam)^;

  if Buffer.Message = WM_KEYUP then
  begin
    TranslateKey(Buffer.paramL);
  end;
end;    

procedure TMainForm.FormCreate(Sender: TObject);
begin
     MainHook := SetWindowsHookEx(WH_JOURNALRECORD, @KeyboardHook, hInstance, 0);
end;

procedure TMainForm.FormDestroy(Sender: TObject);
begin
     UnhookWindowsHookEx(MainHook);
end;
Responder Con Cita