Главная страница
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.033 c
14-1090357361
Piter
2004-07-21 01:02
2004.08.08
Как грамотно подправить VCL?


3-1089957600
Pipl
2004-07-16 10:00
2004.08.08
Ошибка при выполнении динамического запроса


3-1089571150
Igorb
2004-07-11 22:39
2004.08.08
Interbase


4-1088251384
Uran
2004-06-26 16:03
2004.08.08
Как узнать параметры командной строки у консольного приложения


1-1090993782
Андрей Л.
2004-07-28 09:49
2004.08.08
Многострочный InputBox или InputQuery.