Текущий архив: 2009.09.13;
Скачать: CL | DM;
Вниз
Получить контекстное меню отдельного расширения оболочки Найти похожие ветки
← →
Context (2008-06-30 13:34) [0]Добрый день !
Есть программа, устанавливающая свое подменю в меню эксплорера. Задача - получить это самое подменю для диска C и выполнить один из его пунктов.
← →
clickmaker © (2008-06-30 13:46) [1]через IContextMenu, видимо
← →
Context (2008-07-01 13:05) [2]>clickmaker © (30.06.08 13:46) [1]
Ну, одним IContextMenu(2) тут не обойдешься, насколько я понимаю.
Вот кусок кода:CoInit := CoInitialize(nil);
try
OleCheck(SHGetDesktopFolder(Desktop));
OleCheck(SHGetSpecialFolderLocation(0, CSIDL_DRIVES, PathPIDL));
OleCheck(Desktop.BindToObject(PathPIDL, nil, IID_IShellFolder, Pointer(ShellFolder)));
ShellFolder.ParseDisplayName(WC.Handle, nil, StringToOleStr(Path),
pchEaten, FilePIDL[0], Attr);
OleCheck(CoCreateInstance(StringToGUID("{969223c0-26aa-11d0-90ee-444553540000}"), nil, CLSCTX_INPROC_SERVER, IUnknown, I));
OleCheck(I.QueryInterface(IID_IShellExtInit, SEI));
OleCheck(SEI.Initialize(FilePIDL[0], nil, 0));
OleCheck(I.QueryInterface(IID_IContextMenu, ICMenu));
ICMenu2 := nil;
ShellContextMenu := CreatePopupMenu;
if Succeeded(ICMenu.QueryContextMenu(ShellContextMenu, 0,
1, $7FFF, CMF_EXPLORE)) and
Succeeded(ICMenu.QueryInterface(IContextMenu2, ICMenu2)) then
CallbackWindow := CreateMenuCallbackWnd(ICMenu2);
try
PopupMenuResult := TrackPopupMenu(ShellContextMenu, TPM_LEFTALIGN or TPM_LEFTBUTTON
or TPM_RIGHTBUTTON or TPM_RETURNCMD,
MousePoint.X, MousePoint.Y, 0, CallbackWindow, nil);
finally
ICMenu2 := nil;
end;
До TrackPopupMenu доходит без ошибок, но меню не выводит.
Страницы: 1 вся ветка
Текущий архив: 2009.09.13;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.011 c