Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
11-100651
Arhangel
2002-11-30 15:20
2003.07.31
Есть архив?


3-100603
McSimm2
2003-07-09 11:34
2003.07.31
---|Ветка была без названия|---


3-100629
paxer
2003-07-10 11:21
2003.07.31
Нужнай дока по Interbase (желат.на русском)


1-100753
Orden
2003-07-16 15:07
2003.07.31
Rave-компоненты


6-100867
pirat
2003-05-23 18:20
2003.07.31
Во всем виноват прокси ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский