Содержание материала

Code:

library lib2;

uses

windows, messages;

var

pt : TPoint;

theHook : THandle;

function MouseHook(nCode, wParam, lParam : integer) : Lresult; stdcall;

var

msg : PMouseHookStruct;

w : THandle;

style : integer;

Begin

if nCode<0 then

  begin

  result := CallNextHookEx(theHook, nCode, wParam, lParam);

  Exit;

  end;

msg := PMouseHookStruct(lParam);

case wParam of

WM_MBUTTONDOWN :

  pt := msg^.pt;

WM_MBUTTONUP :

  begin

  w := WindowFromPoint(pt);

  style := GetWindowLong(w, GWL_EXSTYLE);

  if (style and WS_EX_TOPMOST) <> 0 then

    begin //уже поверх всех - сделать обычным

    ShowWindow(w, sw_hide);

    SetWindowPos(w, HWND_NOTOPMOST, 0,0,0,0, SWP_NOMOVE or SWP_NOSIZE OR SWP_SHOWWINDOW);

    end

  else

    begin //сделать поверх остальных

    ShowWindow(w, sw_hide);

    SetWindowPos(w, HWND_TOPMOST, 0,0,0,0, SWP_NOMOVE OR SWP_NOSIZE OR SWP_SHOWWINDOW);

    end;

  end;

end;

Result := CallNextHookEx(theHook, nCode, wParam, lParam);

End;

 

procedure Start;

begin

theHook := SetWindowsHookEx(wh_mouse, @mouseHook, hInstance, 0);

if theHook = 0 then

  messageBox(0,'Error!','Error!',mb_ok);

end;

 

procedure Remove;

begin

UnhookWindowsHookEx(theHook);

end;

 

exports

Start index 1 name 'Start',

Remove index 2 name 'Remove';

end.

 

(С) Автор статьи: Sergey Stolyarov

 

Автор: StayAtHome

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить