Главная страница
    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
1-100811
DimaS
2003-07-17 13:42
2003.07.31
Как переименовать файл или группу файлов по маске?


1-100796
Beginner3000
2003-07-16 00:32
2003.07.31
---|Ветка была без названия|---


1-100718
vic_774N
2003-07-16 00:16
2003.07.31
Маленькая проблемка с MSWord


14-100970
Lexer
2003-07-15 20:11
2003.07.31
Нужна подписка на вопрос в форуме.


7-101000
V-navigator
2003-05-21 19:15
2003.07.31
Как програмно открыть защелку СD-ROM





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский