Muchisimas gracias amigo escafandra, eres un maestro
me funciona perfecto.
Le comento que al probarlo tuve dos inconvenientes pero pude solucionarlos de la siguiente manera:
1. La primer prueba me salió este error:
unit1.pas(30,15) Error: Identifier not found "HHOOK"
Solución: le agregue el uses "windows"
2. Ya con el uses "windows" ahora me salió este error:
unit1.pas(59,33) Error: Identifier not found "WH_MOUSE_LL"
Solución: Investigando en la web, agregué este código para solucionarlo:
Uses
. . . . Windows;
const
//WH_KEYBOARD_LL =13;
WH_MOUSE_LL =14;
type
......
Agrego el código completo:
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
windows, Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls; // agregue el uses "windows"
const
//WH_KEYBOARD_LL =13;
WH_MOUSE_LL =14; // lo agregué para que funcione
type
{ TForm1 }
TForm1 = class(TForm)
Label1: TLabel;
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
procedure FormCreate(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
var
Form1: TForm1;
hMouseHook: HHOOK;
implementation
{$R *.lfm}
{ TForm1 }
function MouseEvent(nCode, wParam, lParam: Integer): Integer; stdcall;
var
Point: TPoint;
begin
if nCode>=0 then
begin
GetCursorPos(Point);
Form1.Label1.Caption:= '(' + IntToStr(Point.X) + ', ' + IntToStr(Point.Y) + ')';
Result:= CallNextHookEx(hMouseHook, nCode, wParam, lParam);
procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
// Paramos el Hook
UnhookWindowsHookEx(hMouseHook);
procedure TForm1.FormCreate(Sender: TObject);
begin
// Ponemos en marcha el Hook
hMouseHook:= SetWindowsHookEx(WH_MOUSE_LL, @MouseEvent, HInstance, 0);
.
Ahora si me funciona.
Amigo Escafandra usted cree que esta bien estos códigos que he agregado, por favor corrijame de ser necesario.