Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Win API


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / WinAPI

Выпуск № 345
от 21.11.2006, 18:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 393, Экспертов: 29
В номере:Вопросов: 1, Ответов: 1


Вопрос № 62904: Здравствуйте эксперты. Хочу заменить WndProc у рабочего стола на свой собственный(В МИРНЫХ ЦЕЛЯХ). Как это осуществить? PS желательно с примером на Delphi или C++. PSPS знаю что это делается с помощью SetWindowLong, но незнаю как ей польз...

Вопрос № 62.904
Здравствуйте эксперты.
Хочу заменить WndProc у рабочего стола на свой собственный(В МИРНЫХ ЦЕЛЯХ). Как это осуществить?
PS желательно с примером на Delphi или C++.
PSPS знаю что это делается с помощью SetWindowLong, но незнаю как ей пользоваться.
Зарание спасибо.
Отправлен: 16.11.2006, 18:28
Вопрос задал: _Alex_ (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Sergey A. Wedensky
Здравствуйте, _Alex_!

LONG SetWindowLong(HWND hWnd, int nIndex, LONG dwNewLong);

В Вашем случае nIndex == GWL_WNDPROC. Однако в NT/XP/2000 и иже с ними
у Вас ничего не получится, если окно hWnd принадлежит другому
процессу, нежели поток, вызывающий SetWindowLong.

А по сему (в форуме уже звучали слова о хуках...):
выход - создать DLL, в ней hook-функцию (например, на WH_CALLWNDPROC),
подгрузить ее, установить хук, и в нем заменить WndProc.
Т.е. вызов SetWindowLong будет в DLL, которая будет подгружена в
процесс, создавший окно десктопа (explorer.exe, если не ошибаюсь).

Метод работает, проверено, в свое время ровно таким способом
переопределял поведение часиков в системном трее.

Могу поделиться кодом, пишите (sergey_wedensky@srisa.ru).

Удачи!
Ответ отправил: Sergey A. Wedensky (статус: 8-ой класс)
Ответ отправлен: 17.11.2006, 09:45
Оценка за ответ: 5
Комментарий оценки:
Большое спасибо. Идею понял, а кодик пригадился бы.


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.37 от 04.10.2006
Яндекс Rambler's Top100

В избранное