Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.09.02;
Скачать: CL | DM;

Вниз

не ловится WM_COMMAND при нажатии на пункт меню   Найти похожие ветки 

 
fon-karlson ©   (2007-03-14 13:04) [0]

Доброе время суток!

Есть такой вот код:

function MessageProc(code: integer; wParam: Integer; lParam: Longint): Longint; stdcall;
var
szClassName: array[0..255] of Char;
i_cnt:integer;
MHS:TCWPStruct;
hPopupMenu:HMenu;
hPopupSubMenu:HMenu;
i,j: byte;
k: Bool;
my_mii, my_sub_mii: MENUITEMINFO;
const
ie_name = "Internet Explorer_Server";
begin
 if (Code = HC_ACTION) and (wParam=0) then begin
     MHS:=PCWPStruct(lParam)^;
     GetClassName(MHS.hwnd, szClassName, SizeOf(szClassName));
     if (lstrcmp(@szClassName[0], @ie_name[1]) = 0) then begin

       Case MHS.message of
       WM_InitMenuPopup: begin
         hPopupMenu:=MHS.wParam;
         i_cnt:=GetMenuItemCount(hPopupMenu);
         InsertMenu(hPopupMenu, i_cnt, MF_STRING or , , "НОВАЯ ПРИБЛУДА");
       end; {WM_InitMenuPopup}

       WM_COMMAND: begin
   ShowMessage(IntToStr(LoWord(MHS.wParam)));
       end; {WM_COMMAND}

       WM_UnInitMenuPopup: begin
         //Some code…
       end; {WM_UnInitMenuPopup}
       end; {Case MHS.message}

     end;
 end;
 Result := CallNextHookEx(SysHook1, Code, wParam, lParam);
end;

и на сообщение WM_COMMAND совершенно никакой реакции... Подскажите пожалуйста, в чём проблема?


 
Сергей М. ©   (2007-03-14 15:38) [1]


> в чём проблема?


В том, очевидно, что эта твоя ф-ция никем не вызывается.


 
fon-karlson ©   (2007-03-14 16:29) [2]


> В том, очевидно, что эта твоя ф-ция никем не вызывается.

Хук установлен, при WM_InitMenuPopup пункт в меню добавляется, при WM_UnInitMenuPopup операции тоже выполняются, а вот при нажатии на любой пункт меню по идее, окну должен быть отправлен WM_COMMAND, и должен выпасть Message с ID нажатого пункта, но однако никак...


 
Сергей М. ©   (2007-03-14 16:41) [3]


> Хук установлен


Раз установлен, значит ф-ция вызывается.

Все остальное - в алгоритме этой ф-ции.


 
fon-karlson ©   (2007-03-14 16:57) [4]

Возможно, я неверно выразился, либо я неверно Вас понял, тогда прошу прощения. Но суть проблемы в том, что Я не могу "поймать" WM_COMMAND от окна (в данном случае IE) при нажатии на пункт меню. Представленная мной функция является как раз реализацией ЛОВУШКИ WH_CallWndProc. Т.е. Не ловится он этой функцией.


 
Сергей М. ©   (2007-03-14 17:02) [5]

Что говорит встроенный отладчик ?


 
fon-karlson ©   (2007-03-14 18:01) [6]

Не смотрел, сейчас гляну.
Есть одна особенность: если на компе, на котором запускаю программу установлен Google ToolBar - всё работает :-/


 
fon-karlson ©   (2007-03-14 18:21) [7]

Встроенный отладчик молчит.
Хук у меня реализован в dll-ке. а из приложения он только устанавливается.


 
fon-karlson ©   (2007-03-16 14:33) [8]

Проблема никак не хочет решаться. Такое впечатление, что при выборе пункта меню, окну IE не отсылается сообщение WM_COMMAND... По крайней мере, я немогу его "поймать".
Если кто сталкивался с такой или подобной проблемой - расскажите, как она решается?



Страницы: 1 вся ветка

Текущий архив: 2007.09.02;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.044 c
6-1168779369
@gent
2007-01-14 15:56
2007.09.02
Как скрытно зайти на страницу ?


8-1164713466
Tar I
2006-11-28 14:31
2007.09.02
Вывод графики поверх видео


15-1185959643
Сатир
2007-08-01 13:14
2007.09.02
Не сохраняются настройки cxGrid, если не установлен Delphi


9-1159275964
Vivelion
2006-09-26 17:06
2007.09.02
GLFOG


8-1164867476
Павел123456
2006-11-30 09:17
2007.09.02
Как "склеить" Bitmap-ы в видео?