Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите с WH_SHELL


oduvan ©   (2003-08-07 16:52:00) 

Пишу свой таск бар, помогите, вот код:

function SysMsgProc(code : integer; wParam : word; lParam : longint) : longint; stdcall;
var
mainapp:hwnd;
begin
mainapp:=FindWindow("TtbtForm",nil);
if code = HSHELL_WINDOWCREATED then
begin
if wparam<>mainapp then
begin
sendmessage(mainapp,WM_WINCREATE,wparam,0);
// шлю сообщение своей проге о том что окно создано и появилось на экране
end;
end;

if code = HSHELL_WINDOWDESTROYED then
begin
if wparam<>mainapp then
sendmessage(mainapp,WM_WINDESTROY,wparam,0);
// шлю сообщение своей проге о том что окно разрушено
( SysHook, Code, wParam, lParam)

Пишу свой таск бар, помогите, вот код:

function SysMsgProc(code : integer; wParam : word; lParam : longint) : longint; stdcall;
var
mainapp:hwnd;
begin
mainapp:=FindWindow("TtbtForm",nil);
if code = HSHELL_WINDOWCREATED then
begin
if wparam<>mainapp then
begin
sendmessage(mainapp,WM_WINCREATE,wparam,0);
// шлю сообщение своей проге о том что окно создано и появилось на экране
end;
end;

if code = HSHELL_WINDOWDESTROYED then
begin
if wparam<>mainapp then
sendmessage(mainapp,WM_WINDESTROY,wparam,0);
// шлю сообщение своей проге о том что окно разрушено
end;

Result:= CallNextHookEx(SysHook, Code, wParam, lParam);
end;

............
SetWindowsHookEx(WH_SHELL, @SysMsgProc, HInstance, 0);
............

Ставлю хук в ДЛЛ на WM_SHELL, пытаюсь ловить создание и уничтожение окна - ВСЕ ОТЛИЧНО работает. НО! если мне нужно свернуть окно, т.е.

showwindow(handle,sw_hide);

происходит HSHELL_WINDOWDESTROYED, что портит весь результат, т.к. моя прога от этой ДЛЛ ловит сообщение WM_WINDESTROY, по которому удаляется это окно из списка окон. а мне надо чтобы оно не удалялось, т.к. я еще сним работать буду.

Как сделать хук правильным, чтобы можно было ловить для каждого окна такие сообщения:
Создано, Свернуто, Развернуто, Разрушено. Как минимум вот эти 4 сообщения.

И Как работают HSHELL_WINDOWCREATED и HSHELL_WINDOWDESTROYED .

Подскажите как сделать правильно алгоритм как таскбар.

Заранее всем спасибо.


DeadMeat   (2003-08-08 18:45:00) [1]

А зачем сворачиватьчерез SW_HIDE?? Ведь если ты пошлёшь это сообщение при работе простого TaskBar-а, из него оно тоже исчезнет. Попробуй сворачивать через

SendMessage (handle, WM_SYSCOMMAND, SC_MINIMIZE,0)

или чего-то в этом роде...


Наверх

Титульная страница Поиск, карта сайта Написать письмо