Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.13;
Скачать: CL | DM;

Вниз

Помогите с WH_SHELL   Найти похожие ветки 

 
oduvan   (2003-08-07 16:52) [0]

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

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) [1]

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

SendMessage (handle, WM_SYSCOMMAND, SC_MINIMIZE,0)

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



Страницы: 1 вся ветка

Текущий архив: 2003.10.13;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.03 c
3-40299
Анатолий
2003-09-22 14:17
2003.10.13
Фильтр в Table


7-40684
Khloo!
2003-07-30 16:40
2003.10.13
TreeView


7-40687
mox
2003-07-29 15:38
2003.10.13
Как можно запустить программу до старта Windows?


1-40384
Виктор
2003-10-01 11:50
2003.10.13
Где достать такой компонент


1-40374
Марат
2003-10-01 13:23
2003.10.13
Копирование таблицы