Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.31;
Скачать: CL | DM;

Вниз

Событие минимизации другого окна.   Найти похожие ветки 

 
demonyator ©   (2003-05-25 15:57) [0]

Как отлавливать оконные события для чужих окон. Например: наблюдать за окном Delphi 7 и когда оно будет свёрнуто пользователем - развернуть его опять....


 
Song ©   (2003-05-25 16:10) [1]

Хук на сообщение того окна.


 
demonyator ©   (2003-05-25 20:14) [2]


> Song

а если необходимо отлавливать все видимые окна системы?


 
Jack-of-shadow ©   (2003-05-25 21:46) [3]

Вот небольщой пример dll, исключив специфику, получишь то, что надо:

library HookLib;

uses
Windows;

var
Handle: THandle = 0;
Hook: Cardinal = 0;
ThreadControl: boolean;

function RemHook: boolean; forward;

function CBTProc(nCode: Integer; WParam,LParam: Cardinal): LongInt; stdcall;
var Prevent: boolean;
P: TPoint;
begin
Prevent := False;
if (nCode = HCBT_SYSCOMMAND) then
begin
GetCursorPos(P);
if (WindowFromPoint(P) = Handle) or ThreadControl then
{а вот проверка: то ли это окно, которое надо ловить. Убрать её - и будет для всей системы работать. Однако, пристрелил бы того, кто б меня заставил работать на компе с такими хуками для всей системы..)}
case WParam of
SC_MAXIMIZE: Prevent := True;
SC_MINIMIZE: Prevent := True;
end;
end;
if Prevent then Result := 1 else
Result := CallNextHookEx(Hook,nCode,WParam,LParam);
end;

function SetHook(WndHandle: THandle; ThreadCtrl: boolean; PHookId: PCardinal = nil): boolean;
begin
ThreadControl := ThreadCtrl;
if Hook = 0 then
begin
Handle := WndHandle;
Hook := SetWindowsHookEx(WH_CBT,@CBTProc,HInstance,GetWindowThreadProcessId(WndHandle));
if PHookId <> nil then PHookId^ := Hook;
end;
Result := Hook <> 0;
if Result then SetWindowText(Handle,"Hook activated")
end;

function RemHook: boolean;
begin
if Hook <> 0 then
begin
UnhookWindowsHookEx(Hook);
Hook := 0;
end;
Result := Hook = 0;
if Result then SetWindowText(Handle,"Hook deactivated")
end;

exports CBTProc, SetHook, RemHook;

begin
end.


 
Song ©   (2003-05-25 22:36) [4]

>>а если необходимо отлавливать все видимые окна системы?
Логично. Хук на сообщения всех окон.


 
demonyator ©   (2003-05-26 18:40) [5]

спасибо всем - буду еб***ся :)



Страницы: 1 вся ветка

Текущий архив: 2003.07.31;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.019 c
14-100963
Orion2
2003-07-15 13:02
2003.07.31
Бесплатный хостинг


3-100611
DBDev
2003-07-09 15:11
2003.07.31
Проблема с TDBImage! Подскажите ПЛИЗ!!!


1-100806
Yuraz
2003-07-17 09:31
2003.07.31
Как узнать полный путь запущенной программы?


7-100991
Velikan
2003-05-20 02:16
2003.07.31
Как получить доступ к USB?


3-100632
SergeyI
2003-07-10 09:53
2003.07.31
Как не убрать помеченые на удаление записи ?