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

Вниз

Hook WH_SHELL   Найти похожие ветки 

 
Deeman   (2007-08-27 10:56) [0]

Здравствуйте. Ставлю хук, все работает хорошо, но хук не реагирует на касперского. Как можно отловить закрытие/появление окна касперского?


 
SLoW.AlfaMoon.Com   (2007-08-27 11:18) [1]

никак если вы не член его семьи ;)


 
Deeman   (2007-08-27 13:15) [2]

А как же тогда оболочка Windows"а узнает,что он запускается?


 
Сергей М. ©   (2007-08-27 13:16) [3]


> Deeman   (27.08.07 13:15) [2]


А что такое "окно касперского" ?


 
clickmaker ©   (2007-08-27 13:28) [4]


> А как же тогда оболочка Windows"а узнает

а что она при этом делает?


 
Сергей М. ©   (2007-08-27 13:30) [5]


> что она при этом делает?


Подпрыгивает от искренней и неподдельной радости ?)


 
MultIfleX   (2007-08-28 09:13) [6]

Можешь по таймеру FindWindow и isWindosVisible использовать. щас посмотрел, вроде должно работать, класс "AVP.MainWindow" (у кис 7.0), у сервиса окон нету.


 
Deeman   (2007-08-28 12:24) [7]

При появлении окна касперского на панели задач появляется кнопка. Можно как-либо узнать о его появлении без таймера и поиска всех окон? Кто-нибудь знает как оболочка (explorer) узнает, что окно появилось и что надо создать для него кнопку?


 
Сергей М. ©   (2007-08-28 12:35) [8]


> Deeman   (28.08.07 12:24) [7]


А можно полюбопытствовать, за каким лешим тебе понадобилось ловить это окно ?)


 
clickmaker ©   (2007-08-28 12:51) [9]


> Кто-нибудь знает как оболочка (explorer) узнает, что окно
> появилось

вызвали CreateWindow со стилем WS_EX_APPWINDOW, а потом ShowWindow


 
Deeman   (2007-08-28 13:06) [10]


>
> А можно полюбопытствовать, за каким лешим тебе понадобилось
> ловить это окно ?)


Мне нужно ловить все окна, но это оказалось самое не простое.


 
Deeman   (2007-08-28 13:07) [11]


> вызвали CreateWindow со стилем WS_EX_APPWINDOW, а потом
> ShowWindow


И что? А оболчка как об этом узнала? Какое сообщение ей послала прога?


 
Deeman   (2007-08-28 13:08) [12]


> Можешь по таймеру FindWindow и isWindosVisible использовать


Сделал так. Все хорошо. Но некоторые окна дублируются. Как узнать какое из них показано в панели задач?


 
Сергей М. ©   (2007-08-28 13:14) [13]


> нужно ловить все окна


За каким лешим ?)


 
Deeman   (2007-08-28 13:34) [14]


> За каким лешим ?)


Хочу создать аналог панели задач


 
Сергей М. ©   (2007-08-28 13:41) [15]


> Хочу создать аналог панели задач


Зачем писать "аналог" ?


 
Deeman   (2007-08-28 13:45) [16]

Ну захотелось. Мало ли какие желания бывают.


 
Сергей М. ©   (2007-08-28 13:55) [17]

Ну тады перехватывай глобально вызовы ф-ций CreateWindow[Ex], ShowWindow - думаю, тебе этого будет достаточно.


 
Deeman   (2007-08-28 19:19) [18]


> Ну тады перехватывай глобально вызовы ф-ций CreateWindow[Ex],
>  ShowWindow - думаю, тебе этого будет достаточно.


Слишком жестоко. Лучше бы подсказали как разобраться с дубликатами. Как отличить главную форму программы от самой программы, а то они на isWindosVisible отвечают true и оба попадают в список окон.


 
DVM ©   (2007-08-28 22:39) [19]

Не надо никаких перехватов CreateWindow() WH_SHELL окно касперсого прекрасно отлавливает. А вот окна консольных приложений не отлавливает. Для этого есть другой способ.


> Как отличить главную форму программы от самой программы,
>  а то они на isWindosVisible отвечают true и оба попадают
> в список окон.

Я вот так окна фильтровал:


function IsAppWindow(Wnd: HWND): BOOL; stdcall;
var
 Style, ExtStyle: LongInt;
 hOwner, hParent: HWND;
begin
 Result := true;
 if not IsWindow(Wnd) then
   begin
     Result := false;
     exit;
   end;
 Style := GetWindowLong(Wnd, GWL_STYLE);
 ExtStyle := GetWindowLong(Wnd , GWL_EXSTYLE);
 hOwner := GetWindow(Wnd, GW_OWNER);
 hParent := GetParent(Wnd);
 if (Style and WS_CHILD) <> 0 then result := false;
 if (Style and WS_VISIBLE) = 0 then Result := false;
 if not IsWindowVisible(Wnd) then Result := false;
 if (ExtStyle and  WS_EX_TOOLWINDOW) <> 0 then Result := false;
 if (ExtStyle and  WS_EX_MDICHILD) <> 0 then Result := false;

 if (hOwner <> 0) and ((ExtStyle and WS_EX_APPWINDOW) = 0) then result := false;
 if (hOwner <> 0) and Result then Result := not IsAppWindow(hOwner);

 if hParent <> 0 then Result := false;
 if GetWindowLong(Wnd , GWL_USERDATA) = MagicDWord then Result := false;
end; // End of function IsAppWindow;


 
DVM ©   (2007-08-28 22:53) [20]


> Deeman

вот я когда то делал шеллозаменитель http://dvmuratov.narod.ru/myshell.zip (без исходников) проверь ловит ли окна касперского. Пароль там если что 3141592653


 
Deeman   (2007-08-29 10:34) [21]


> вот я когда то делал шеллозаменитель http://dvmuratov.narod.
> ru/myshell.zip (без исходников) проверь ловит ли окна касперского.
>  Пароль там если что 3141592653
>


Кнопка появляется, но в отличие от других как-то тормознуто. А вот значка касперского в трее нет.

А вообще у меня к тебе появилось несколько вопросов по поводу этой проги. Очень интересная вещь, но очень сырая. Можешь мне помочь? Я бы тебе скинул вопросы на e-mail.


 
DVM ©   (2007-08-29 11:39) [22]


> Кнопка появляется, но в отличие от других как-то тормознуто.

Специально поставил 6 касперского попробовал - кнопка появляется нормально.

В том, что не появляется иконка касперского в области уведомлений, так в этом виноват сам касперский. Она и после перезапуска эксплорера не появляется. Ты ведь запускал мою программу из самого эксплорера или закрыв оный, не устанавливая мою программу как оболочку - соответственно касперский проигнорировал широковещательное сообщение Taskbar Created и иконку не обновил.


> Очень интересная вещь, но очень сырая

Ну явных багов в ней нет, есть недоделки, но она и не предназначалась для полноценной замены - у нее свое предназначение было в свое время.


> Можешь мне помочь? Я бы тебе скинул вопросы на e-mail

А почему бы не писать в эту ветку? Я форум читаю чаще, чем апочту с того ящика, что в анкете.


 
Deeman   (2007-08-29 12:11) [23]

1. У меня Касперский 7. На счет иконки наверное ты прав. Это не так важно.
2. Вопросы у меня разноплановые, с темой никак не связаны. Может конечно наглею, но может дашь исходник?
3. Может через ICQ?


 
DVM ©   (2007-08-29 12:20) [24]


> 1. У меня Касперский 7

Роли не играет.


> 2. Вопросы у меня разноплановые, с темой никак не связаны.

Ну хорошо пиши на почту.


> Может конечно наглею, но может дашь исходник?

Я не склонен раздавать исходники, тем более, что в данном случае есть еще и соавтор.


> 3. Может через ICQ?

Лучше почта.



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

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

Наверх




Память: 0.52 MB
Время: 0.095 c
9-1169396515
Samarik
2007-01-21 19:21
2008.04.27
Программа установки игры


4-1188449821
Darkwingg
2007-08-30 08:57
2008.04.27
Как этот код работает (GlobalAlloc)


15-1205469399
monk
2008-03-14 07:36
2008.04.27
подключить боковые кнопки мыши в webbrowser


2-1206806274
KiLLiR
2008-03-29 18:57
2008.04.27
Запрет на вставку текста из буфера в Edit


15-1205503904
Дмитрий С
2008-03-14 17:11
2008.04.27
Из пиратской честную.