Вызов IContextMenu непосредственно из dll расширения оболочкиC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Вызов IContextMenu непосредственно из dll расширения оболочки

Сообщение Anonymous »

Вызов IContextMenu непосредственно из dll расширения оболочки
Я пытаюсь вызвать IContextMenu непосредственно из dll расширения оболочки, но возникли некоторые проблемы.
В целом
  • Загружаю DLL с помощью LoadLibrary
  • Вызов GetProcAddress, чтобы получить адрес DllGetClassObject
  • Позвонить DllGetClassObject для получения IID_IClassFactory
  • Вызов CreateInstance для получения IID_ContextMenu
Первые три шага успешны, но четвертый шаг завершается с ошибкой E_NOINTERFACE. То же самое произойдет, если я запрошу IID_IContextMenu2 и IID_IContextMenu3.
В конце концов я хочу получить доступ к IContextMenu и вызвать IContextMenu::QueryContextMenu. Как мне этого добиться?
#include
#include
#include

typedef HRESULT(WINAPI* DllGetClassObjectType)(REFCLSID rclsid, REFIID riid, void** ppv);

int main()
{
CoInitialize(NULL);

HMODULE hModule = LoadLibrary(L"C:\\Users\\UserName\\Desktop\\NppShell.dll");
if (!hModule) {
std::cout

Подробнее здесь: https://stackoverflow.com/questions/793 ... ension-dll
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»