Chertenok.ru - все о программировании
Вход  |  Регистрация  |  Поиск 
Праздник
Сегодня :

День славянской письменности и культуры


вопрос по WinAPI и контекстному меню


Новая тема  Ответить  Печать Предыдущая тема  Следующая тема
Автор Сообщение
megad
Гость







СообщениеПт, 12-Авг-2005 12:26    Заголовок сообщения: вопрос по WinAPI и контекстному меню
Цитата

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


Возраст: 32
Знак зодиака: Рак
Зарегистрирован: 15.05.2005
Сообщения: 1502
Откуда: localhost
СообщениеПт, 12-Авг-2005 19:54 
Цитата

все просто до безобразия.

Код:
procedure InitMenu(Menu: HMenu);
begin
  // модифицируем меню перед отображением
end;

function ThreadWndHookProc(HookCode: integer; CurrentProcessFlag: WPARAM;
  MessageData: LPARAM): DWord; stdcall;
begin
  with PCWPSTRUCT(MessageData)^ do
    if (Message=WM_INITMENUPOPUP) then InitMenu(wParam);
  result:=0;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Form1.HookEx:=SetWindowsHookEx(WH_CALLWNDPROC, @ThreadWndHookProc,
    hInstance, GetWindowThreadProcessId(Handle, nil))
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  UnhookWindowsHookEx(Form1.HookEx);
end;
В начало
Посмотреть профиль Отправить личное сообщение
megad
Гость







СообщениеПт, 12-Авг-2005 20:12 
Цитата

огромное спасибо! завтра попробую....
В начало
Показать сообщения:   
Страница 1 из 1
Перейти:  
Новая тема  Ответить  Печать

Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете присоединять файлы в этом форуме
Вы можете скачивать файлы в этом форуме
хостинг от .masterhost 
Rambler's Top100