GetItemObject (SVGIO_BACKGROUND, IID_IContextMenu, указатель (см) отсутствует новые пункты меню - PullRequest
0 голосов
/ 17 марта 2019

Я искал сеть до последнего угла и не могу найти решение этой проблемы. Я пытаюсь получить фоновое контекстное меню, отображаемое в проводнике Windows, но не могу сделать проклятое «НОВОЕ» подменю для заполнения его записей. Я не могу понять, почему он остается пустым. Ища это, я нашел предложение, что CLSID_NewMenu должен быть создан вручную, но этот код также возвращает странную ошибку, которую я не могу понять.

{SHParseDisplayName(PChar('G:\copytest\src\'), nil, ParentFolderPIDL, 0, dwAttributes);}

 hr := CoCreateInstance(CLSID_NewMenu,nil,CLSCTX_INPROC_SERVER,IID_IShellExtInit,ps);
 hr := ps.Initialize(ParentFolderPIDL,lpdobj,0);
 hr := ps.QueryInterface(IID_IContextMenu2,newContextMenu);
 hr := newContextMenu.QueryContextMenu(Menu.Handle, 1, 1, 30000, CMF_NORMAL);
 Showmessage(SysErrorMessage(GetLastError()));

Приведенный выше код возвращает 64 десятичного знака - «Доступно больше данных», что не имеет никакого смысла, так как данные не запрашиваются и буфер не передается - такая ошибка обычно возвращается при недостаточном размере буфера.

Приведенный выше код просто добавляет еще одно пустое подменю «Новое» в фоновое меню. На самом деле оба пункта «Новый» (пункт меню) -> «Новый» (пункт подменю), который ничего не делает. Пожалуйста, дайте мне знать, что я могу упустить, если у вас есть какие-либо подсказки, поскольку я схожу с ума от этой вещи. Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...