Главная страница
    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
6-100858
vald
2003-05-17 13:01
2003.07.31
MSMQ


3-100620
LinOS
2003-07-09 08:24
2003.07.31
Как получить пользователя из SQLConnection??


7-101009
chuvak
2003-05-19 13:14
2003.07.31
Тут гдето проскакивала тема про замену Explorera на свою программ


1-100736
Nucl
2003-07-19 12:38
2003.07.31
monochrome mode


3-100597
urich
2003-07-09 10:30
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский