Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2007.09.02;
Скачать: [xml.tar.bz2];

Вниз

не ловится 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2007.09.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.047 c
2-1186662007
Gamer
2007-08-09 16:20
2007.09.02
работа с Firebird из Delphi 2006


4-1173526703
BOGa
2007-03-10 14:38
2007.09.02
Обмен данными между процессами ( WM_COPYDATA)


8-1164779407
Vulix
2006-11-29 08:50
2007.09.02
Прозрачное окно, созданное с помощью CreateWindow


15-1186301404
boriskb
2007-08-05 12:10
2007.09.02
Детская площадка


15-1186331384
foreverDelphi
2007-08-05 20:29
2007.09.02
от ламера гуру Piterу





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский