IContextMenu падение при Initialize
От: ecspertiza  
Дата: 04.06.12 13:35
Оценка:
Добрый день форумчане, пробую добавить в контекстное меню ОС пару своих пунктов. Почитал немного про IContextMenu вроде то что нужно. Стало быть накатал небольшое расширение ,но при вызове Inicialize периодически explorer валиться на строчке

if ( FAILED( pDataObj->GetData ( &fmt, &stg ))) // <---- Вот тут
{
return E_INVALIDARG;
}

при этом переменные fmt и stg определены как

FORMATETC fmt = { CF_HDROP, NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL };
STGMEDIUM stg = { TYMED_HGLOBAL };

Я в винапи не силен, посему прошу помощи, в чем может быть косяк ? Еще интересует такой вопрос, после вызова Inicialize моя дллка будет заблокирована эксплорером, а если мне ее к примеру нужно переписать, или еще что, можно ли ее как то разлочить после выполнения нужной команды ?
Re: IContextMenu падение при Initialize
От: okman Беларусь https://searchinform.ru/
Дата: 04.06.12 14:34
Оценка:
Здравствуйте, ecspertiza, Вы писали:

E>при вызове Inicialize периодически explorer валиться на строчке


E>if ( FAILED( pDataObj->GetData ( &fmt, &stg ))) // <---- Вот тут

E>{
E> return E_INVALIDARG;
E>}

Предположу, что в pDataObj иногда может быть NULL. Это надо проверять.

E>Еще интересует такой вопрос, после вызова Inicialize моя дллка будет заблокирована эксплорером, а если мне ее к примеру нужно переписать, или еще что, можно ли ее как то разлочить после выполнения нужной команды ?


Выполнить дерегистрацию COM-расширения, потом перезапустить explorer.
Например, Windows Installer во время удаления всяких shell extensions именно так и поступает, а
на Vista и выше для этого есть Restart Manager — http://msdn.microsoft.com/en-us/library/windows/desktop/cc948910(v=vs.85).aspx
Re: IContextMenu падение при Initialize
От: ecspertiza  
Дата: 04.06.12 14:52
Оценка:
Да,насчет pDataObj вы были полностью правы иногда pDataObj приходил пустой. Спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.