Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » WinAPI | Изменение контекстного меню чужого процесса

Ответить
Настройки темы
WinAPI | Изменение контекстного меню чужого процесса
megad


Сообщения: n/a

Профиль | Цитировать


Подскажите пожалуйста, как используя WinAPI,
решить такой вопрос:
у окна зная его хендл и все что нужно (id процесса и прочие приблуды), перехватив открытие контекстного меню (WM_CONTEXTMENU, WinProc перегружена на мою), ИЗМЕНИТЬ меню которое хочет показать прога, добавив пару пунктов и вывести его на экран и потом получить юзерский выбор пункта.
Переслать дальше проге выбор - знаю как. Вывести меню и получить выбор - известно.
Единственная загвозка -КАК выцепить хендл меню, уже сформированного прогой, или заставить ее как то сформировать меню и получить его хендл.

Отправлено: 13:22, 12-08-2005

 

Пользователь


Сообщения: 117
Благодарности: 1

Профиль | Сайт | Отправить PM | Цитировать


MSDN...

Отправлено: 07:30, 15-08-2005 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для XCodeR

Ветеран


Сообщения: 878
Благодарности: 53

Профиль | Сайт | Отправить PM | Цитировать


ответ прямо скажем не ахти...
может сделаем вообще автоответчик на форуме:
"if(!MSDN)
RTFM
if(!RTFM)
exit();
"

Отправлено: 23:48, 15-08-2005 | #3


Пользователь


Сообщения: 117
Благодарности: 1

Профиль | Сайт | Отправить PM | Цитировать


Они же совсем читать разучатся!

А на нашем горбу выезжать хотят!

Халявщики!

Отправлено: 07:36, 16-08-2005 | #4


Аватара для vadimiron

Ветеран


Сообщения: 1864
Благодарности: 120

Профиль | Отправить PM | Цитировать


Цитата:
Они же совсем читать разучатся!

А на нашем горбу выезжать хотят!

Халявщики!
SergeCpp
А зачем вообще создан форум?? Если не можете ничего ответить, то лучше молчать, а не флеймить попросту

-------
Fortes fortuna adiuvat


Отправлено: 16:01, 16-08-2005 | #5


Аватара для XCodeR

Ветеран


Сообщения: 878
Благодарности: 53

Профиль | Сайт | Отправить PM | Цитировать


SergeCpp
Цитата:
не все же рождаются мегаХацкерами, мне вот к примеру искать в MSDN'e на модеме оч. не сподручно. другое дело, что есть масса мануалов,но тут согласен с vadimiron

Отправлено: 22:50, 16-08-2005 | #6


Пользователь


Сообщения: 117
Благодарности: 1

Профиль | Сайт | Отправить PM | Цитировать


Извините за "наезд" — ничего личного

P.S. А MSDN имеется и на CD...

P.P.S. Всё-таки, в MSDN — более точная информация, чем...

Отправлено: 07:40, 17-08-2005 | #7


Аватара для DillerInc

Обратный инженер


Сообщения: 644
Благодарности: 47

Профиль | Отправить 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


Аватара для XCodeR

Ветеран


Сообщения: 878
Благодарности: 53

Профиль | Сайт | Отправить PM | Цитировать


впринципе, лучше вынести функцию MyHookProc xв отдельный DLL... имхо.....

Отправлено: 21:42, 17-08-2005 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » WinAPI | Изменение контекстного меню чужого процесса

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход