Всем привет. Мне нужно определить номер пункта, под которым находится пункт &Извлечь в контекстном меню Проводника для дисков. Как это сделать? Я пытался найти с помщью процедуры, представленной ниже, но не вышло. Помогите! | Код | 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; |
|