|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » WinAPI | Изменение контекстного меню чужого процесса |
|
WinAPI | Изменение контекстного меню чужого процесса
|
megad
Сообщения: n/a |
Подскажите пожалуйста, как используя WinAPI,
решить такой вопрос: у окна зная его хендл и все что нужно (id процесса и прочие приблуды), перехватив открытие контекстного меню (WM_CONTEXTMENU, WinProc перегружена на мою), ИЗМЕНИТЬ меню которое хочет показать прога, добавив пару пунктов и вывести его на экран и потом получить юзерский выбор пункта. Переслать дальше проге выбор - знаю как. Вывести меню и получить выбор - известно. Единственная загвозка -КАК выцепить хендл меню, уже сформированного прогой, или заставить ее как то сформировать меню и получить его хендл. |
|
Отправлено: 13:22, 12-08-2005 |
Пользователь Сообщения: 117
|
Профиль | Сайт | Отправить PM | Цитировать MSDN...
|
Отправлено: 07:30, 15-08-2005 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 878
|
Профиль | Сайт | Отправить PM | Цитировать ответ прямо скажем не ахти...
может сделаем вообще автоответчик на форуме: "if(!MSDN) RTFM if(!RTFM) exit(); " |
Отправлено: 23:48, 15-08-2005 | #3 |
Пользователь Сообщения: 117
|
Профиль | Сайт | Отправить PM | Цитировать Они же совсем читать разучатся!
А на нашем горбу выезжать хотят! Халявщики! |
Отправлено: 07:36, 16-08-2005 | #4 |
Ветеран Сообщения: 1864
|
Профиль | Отправить PM | Цитировать Цитата:
А зачем вообще создан форум?? Если не можете ничего ответить, то лучше молчать, а не флеймить попросту |
||
------- Отправлено: 16:01, 16-08-2005 | #5 |
Ветеран Сообщения: 878
|
Профиль | Сайт | Отправить PM | Цитировать SergeCpp
Цитата:
|
|
Отправлено: 22:50, 16-08-2005 | #6 |
Пользователь Сообщения: 117
|
Профиль | Сайт | Отправить PM | Цитировать Извините за "наезд" — ничего личного
P.S. А MSDN имеется и на CD... P.P.S. Всё-таки, в MSDN — более точная информация, чем... |
Отправлено: 07:40, 17-08-2005 | #7 |
Обратный инженер Сообщения: 644
|
Профиль | Отправить PM | Цитировать Полностью согласен с vadimiron'ом
А теперь по делу (если уже,правда,не поздно). megad А почему бы тебе не использовать hook следующим образом: var SysHook : HHook; Wnd : HWND; function MyHookProc(Code : Integer; wParam : WORD; lParam : LongInt) : LongInt; stdcall; // Основная функция обработки ловушки begin CallNextHookEx(SysHook, Code, wParam, lParam); // Передаём сообщение другим ловушкам в системе { Начинаем поверку поступившего сообщения } if Code = WM_CONTEXTMENU then begin Wnd := TMsg(Pointer(lParam)^).hwnd; { Тут мы получаем идентификатор окна,сгенерировавшего сообщение - что тебе походу и надо,а дальше могут следовать определённые проверки,и в конце-концов мы должны быть в состоянии изменять окно... } SendMessage(Wnd, msg, wParam, lParam); InvalidateRect(Wnd, nil, True); // ну, и перерисовать окно end; end; // MyHookProc begin { Устанавливаем ловушку } SysHook := SetWindowsHookEx(WH_GETMESSAGE, // ловим все сообщения @MyHookProc, // указатель на нашу функцию-обработчик HInstance, // Указатель на приложение 0 // Идентификатор потока (тут используется текущий) ); end; |
------- Отправлено: 16:05, 17-08-2005 | #8 |
Ветеран Сообщения: 878
|
Профиль | Сайт | Отправить PM | Цитировать впринципе, лучше вынести функцию MyHookProc xв отдельный DLL... имхо.....
|
Отправлено: 21:42, 17-08-2005 | #9 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Delphi - Delphi | Работа с памятью чужого процесса, перехват API | Savant | Программирование и базы данных | 17 | 11-04-2012 13:06 | |
Система - Редактирование контекстного меню | kapitanvagin | Программное обеспечение Windows | 5 | 10-05-2011 18:38 | |
Прочие - [решено] Ошибка контекстного меню | Dexon | Наборы обновлений для Windows XP/2003/Windows 7 | 9 | 27-11-2009 20:58 | |
не могу создать папку из контекстного меню | Yarikus | Microsoft Windows 95/98/Me (архив) | 0 | 08-01-2005 10:48 | |
Периодический запуск процесса (WinAPI) | darxeth | Программирование и базы данных | 1 | 26-02-2004 15:11 |
|