Показать сообщение отдельно
  #4  
Старый 19.08.2008, 00:14
Drozh Drozh вне форума
Активный
 
Регистрация: 12.06.2008
Сообщения: 313
Репутация: 40
По умолчанию

Ну первое что пришло на ум это ловушка...
Создаешь dll приложение, и пишешь:
Код:
library hook;

uses
  Windows, Messages, SysUtils;

var
  SysHook: HHook = 0;

function SysMsgHook(Code: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT stdcall;
var
 Text: String;
begin
  if (Code = HC_ACTION) and
     (wParam = WM_LBUTTONDOWN) then
  begin
   Text := Format('X: %d, Y: %d', [TMouseHookStruct(Pointer(lParam)^).pt.X,
                                   TMouseHookStruct(Pointer(lParam)^).pt.Y]);
   {
    каким либо образом выводишь эту строку
   }
  end;

 Result := CallNextHookEx(SysHook, Code, wParam, lParam);
end;

procedure RunHook() export; stdcall;
begin
 SysHook := SetWindowsHookEx(WH_MOUSE, @SysMsgHook, HInstance, 0);
end;

procedure StopHook() export; stdcall;
begin
 UnhookWindowsHookEx(SysHook);
end;

exports RunHook index 1;
exports StopHook index 2;

begin
end.

В самой программе поле строчки
Код:
var
  Form1: TForm1;

пишешь
Код:
procedure RunHook() stdcall; external 'hook.dll';
procedure StopHook() stdcall; external 'hook.dll';

Далее активируешь ловушку
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
 RunHook();
end;

И уничтожешь
Код:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 StopHook();
end;

Чесно говорю, сам не тестил, но должно работать
Ответить с цитированием