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

Вниз

Кнопка в заголовке всех окон   Найти похожие ветки 

 
Lin   (2004-06-29 12:09) [0]

Хочу поместить кнопку в заголовок всех окон (наподобие zip-magic"а). На форумах нашёл только как поместить кнопку в заголовок своего окна :(

Собираюсь решать задачу так:
0. Пройтись по всем окнам и отобрать окна с заголовками.
1. Определить каким процессам принадлежат отобранные окна.
2. Установить хук на эти процессы.
3. Подменить процедуры этих окон на свои, в которых будет происходить отрисовка моей кнопки.
После всего этого, чтобы обрабатывать новые окна:
4. а) С каким-то интервалом времени отыскивать новые окна и повторять п. 1-3  - как идея это должно сработать, но реализовывать  так я не хочу по целому ряду причин...
4. б) Установить перехват API функций (CreateWindow, MessageBox и др.).

Вопросы к профи:
0. В целом по стратегии: что-то, имхо, слишком сложно. Может быть будет достаточно установить хуки на WH_CALLWNDPROC, WH_GETMESSAGE и WH_GETMESSAGE? Всю обработку делать в них и не подменять процедуры окон, т.е. убрать п. 3-4.
1. Как узнать есть ли у окна заголовок?
2. Если таки прийдётся делать перехват API функций, какие перехватывать? Имхо: CreateWindow, CreateWindowEx, MessageBox, MessageBoxEx, MessageBoxIndirect, CreateDialog, CreateDialogIndirect, CreateDialogIndirectParam, CreateDialogParam, DialogBox, DialogBoxIndirect, DialogBoxIndirectParam, DialogBoxParam и ещё + к этой куче LoadLibrary, LoadLibraryEx, GetProcAddress. - О-ля-ля!! Я ничего не забыл?

Заранее спасибо всем.
P.S. Надеюсь я не сильно притомил длинным вопросом...   :)


 
Игорь Шевченко ©   (2004-06-29 13:11) [1]


> 1. Как узнать есть ли у окна заголовок?


(GetWindowLong(hWnd, GWL_STYLE) and WS_CAPTION) = WS_CAPTION


 
Lin   (2004-06-29 13:12) [2]

Упс! Торможу... Знаете ли первый рабочий день на неделе...
Вопрос №1 снят. Есть такой стиль WS_CAPTION ...


 
Lin   (2004-06-29 13:16) [3]

Пока писал предыдущий пост Игорь уже ответил... Спасибо.


 
GuAV ©   (2004-06-29 13:30) [4]

Имхо меньше. Например MessageBox это wrapper к MessageBoxEx, и т.д.



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

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

Наверх




Память: 0.47 MB
Время: 0.024 c
1-1090830062
Labert
2004-07-26 12:21
2004.08.08
TThread и Synchronize


14-1090499163
menart
2004-07-22 16:26
2004.08.08
Linux


14-1090399956
Esu
2004-07-21 12:52
2004.08.08
Во дают!!


1-1090614361
Duk
2004-07-24 00:26
2004.08.08
Как сделать так чтоб прогу нельзя было закрыть


4-1087460946
WwW
2004-06-17 12:29
2004.08.08
Мастера как из своей программы набрать текст в чужом окне