Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.12.30;
Скачать: [xml.tar.bz2];

Вниз

Перехват открытия и закрытия приложения....   Найти похожие ветки 

 
Vasily Terekhov   (2002-11-14 12:21) [0]

Привет,

ставлю WH_CBT хук. Хочу отловить открытие или закрытие оконного приложения на HCBT_CREATEWND.

Но эток хук перехватывает создание всех окон...
А мне надо, только перехват создания главных окон приложения.

Кто нибудь сталкивался с таким?


 
Song   (2002-11-14 13:22) [1]

На то он и глобальный хук :)
Проверяй в call-back ф-ии хука на принадлежность родителя окна к десктопу. Типа что-то того:

IF GetParent(Handle)=HWND_DeskTop then это_top_level_окно


 
Игорь Шевченко   (2002-11-14 13:40) [2]

Song © (14.11.02 13:22)

Нафига GetParent ? В HookData передается CREATESTRUCT, оттуда и брать все, что надо. В том числе и стиль WS_OVERLAPPED, который определяет TopLevel окно или не TopLevel :-)

С уважением,


 
Song   (2002-11-14 13:44) [3]

Ну... Игорь, что я могу сказать.. только руками развести. Мой способ - тоже способ :-)


 
Vasily Terekhov   (2002-11-14 14:18) [4]

Только тогда не GetParent, а GetWindow(Wnd, GW_OWNER);

Но деле в том, что все равно левые окна попадают в список :((


 
Игорь Шевченко   (2002-11-14 14:47) [5]

Vasily Terekhov (14.11.02 14:18)

У не левых окон нет стилей (чаще всего) WS_CHILD и WS_POPUP


 
Vasily Terekhov   (2002-11-14 14:58) [6]

Игорь Шевченко

У меня при обращении к lparam к lpcs структуре всегда какой-то эксептион:
Я что-то не так делаю?

TCBTCreateWnd(Ptr(lParam)^).lpcs^.lpszName



 
Song   (2002-11-14 15:06) [7]

Вот именно что GetParent()


 
Игорь Шевченко   (2002-11-14 15:11) [8]

Vasily Terekhov (14.11.02 14:58)

До отладчика современная научная мысль не доросла ?


 
Vasily Terekhov   (2002-11-14 15:15) [9]

в доке написано, что топ-левел окно меет Parent = 0 и Owner = 0 или имее стиль WS_OVERLAPPED

я делал проверки на Parent и Owner (через GetParemt и GetWindow(W,GW_OWNWR)), все равно вылезают левые окна, а стиль не могу проверить, т.к. не могу нормально считать струкруру, на которую указывает lParam :((

TCBTCreateWnd(Ptr(lParam)^).lpcs^.style




 
Игорь Шевченко   (2002-11-14 15:40) [10]

PCBTCreateWnd(lParam)^.lpcs^.dwStyle ?


 
Vasily Terekhov   (2002-11-14 16:12) [11]

не, не работает :(((

но не в этом деле, я могу стиль получить GetWindowLong
но тем не менее куча левых окон имеет стиль WS_OVERLAPPEDWINDOW или WS_OVERLAPPE

а мне нужны только пользовательские приложения


 
Игорь Шевченко   (2002-11-14 16:20) [12]

Vasily Terekhov (14.11.02 16:12)


> не, не работает :(((


Выпрямитель нужон...


> а мне нужны только пользовательские приложения


В кладовке, в разделе готовые программы, лежит программа EnumFunctions. Там показано, чем окно пользовательского приложения отличается от других окон. Удачи!


 
Vasily Terekhov   (2002-11-14 17:40) [13]

ок
спасибо

Но дело в том, что проверка на видимость окна, отсекает много ненужного, а когда WND приходит в этот хук, то окно еще не видимо :)))



 
Игорь Шевченко   (2002-11-14 17:54) [14]

Vasily Terekhov (14.11.02 17:40)

WS_VISIBLE в lpcs^.dwStyle :-)))


 
Vasily Terekhov   (2002-11-14 17:56) [15]

:)))
замкнутый круг :)))

ладно, помучаю lpcs :))


 
kostik78ua   (2002-11-14 18:03) [16]

Поставь хук на WH_SHELL
code=HSHELL_WINDOWCREATED/HSHELL_WINDOWDESTROYED



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

Форум: "WinAPI";
Текущий архив: 2002.12.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.007 c
14-99328
Anatoly Podgoretsky
2002-12-10 07:36
2002.12.30
Именинники 10 декабря


1-99038
Шурик Ш
2002-12-17 18:28
2002.12.30
Выпадающий список в Grid


4-99398
stecoff
2002-11-14 15:43
2002.12.30
Работа с arj


1-99066
laser
2002-12-19 14:11
2002.12.30
Очень НАДО


6-99236
Мазут Береговой
2002-11-01 07:16
2002.12.30
Помогите Мазуту!





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