Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Определение номера пункта...


Автор: Guest_Den 21.2.2003, 00:23
Всем привет. Мне нужно определить номер пункта, под которым находится пункт &Извлечь в контекстном меню Проводника для дисков. Как это сделать? Я пытался найти с помщью процедуры, представленной ниже, но не вышло. Помогите!
Код

var
hProgr:THandle; //описатель прграммы
hSubMenu:hMenu;//описатели меню и подменю
CurrNum,CurrSubNum,CountSubNum:Integer;//различные счетчики
CurrName,CurrSubName:pChar;//буфер для хранения пунктов меню
begin
GetMem(CurrName,255);
GetMem(CurrSubName,255);
//Начнем цикл от нуля до последнего пункта
For CurrNum:=0 to GetMenuItemCount(Menu)-1 do
 begin
  GetMenuString(Menu,CurrNum,CurrName,255,MF_BYPOSITION);//вытащим название пункта
//   MessageBox(0,CurrName,'',0);//демонстрируем его
  hSubMenu:=GetSubMenu(Menu,CurrNum);//найдем хэндл подменю
  CountSubNum:=GetMenuItemCount(hSubMenu);//количество пунктовподменю
   if CountSubNum>-1 then //если ок
    begin
     For CurrSubNum:=0 to CountSubNum-1 do //аналогично
       GetMenuString(hSubMenu,CurrSubNum,CurrSubName,255,MF_BYPOSITION);
       if CurrSubName = '&Извлечь' then
     MessageBox(0,PCHar(CurrSubName+InStr(CurrSubNum)),'',0);//пару сток уже было
    end;
  end;
 FreeMem(CurrName);
 FreeMem(CurrSubName);//дестрой
end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)