Форум: "WinAPI";
Текущий архив: 2003.07.31;
Скачать: [xml.tar.bz2];
ВнизСобытие минимизации другого окна. Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.07.31;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c