Главная страница
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.023 c
14-40647
onix
2003-09-24 12:06
2003.10.13
Обратите внимание на проблему


7-40689
Константин
2003-07-29 20:28
2003.10.13
Помогите, нужно поставить хук... или ещё как


14-40657
Stas
2003-09-23 07:09
2003.10.13
Выход из Delphi 7


1-40441
Ser_ega
2003-10-02 23:35
2003.10.13
Дата


14-40586
зануда
2003-09-22 16:54
2003.10.13
олимпиадное программирование