DeactivateActCtx выдает ошибку в Delphi Excel COM надстройки - PullRequest
0 голосов
/ 27 февраля 2020

Я использую Delphi и надстройку Express VCL для разработки надстройки Excel COM. Чтобы включить их в свои формы, я использую манифест и контексты активации, как написано в ответе Дэвида Хеффернана:

Применить Windows Тема к надстройке Office Com

Основываясь на связанном сообщении, вот мой код:

var
  ActivationContext: TActivationContext;
begin
  try
    ActivationContext := TActivationContext.Create;
    try
      ShowMessage('Exception comes after this');
    finally
      ActivationContext.Free;
    end;
  except
    on E:Exception do
      ShowMessage(Format(SErrorString, [E.ClassName, E.Message]));
  end;
end;

Диалоговое окно сообщения отображается правильно (тематически!), Но когда вызывается ActivationContext.Free (который вызывает DeactivateActCtx(0, FCookie);), я получаю следующее исключение:

EExternalException: внешнее исключение C000000D

Обратите внимание, что я вставил ShowMessage в приведенный выше код в демонстрационных целях, обычно я создание и отображение формы с одинаковыми результатами (ошибка).

Как обойти это?


Обновление: Вот манифест, о котором идет речь:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
    version="1.0.0.0"
    processorArchitecture="*"
    name="AddinName"
    type="win32"
/>
<description>Addin description</description>
<dependency>
    <dependentAssembly>
        <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="*"
            publicKeyToken="6595b64144ccf1df"
            language="*"
        />
    </dependentAssembly>
</dependency>
</assembly>

Файл My Res:

2 24 "XP.manifest"

Код для включения файла res:

{$R XPManifest\xp_manifest.RES}

Важно ли, чтобы AddinName совпадал с именем Delphi проект?

Еще одно замечание: надстройка скомпилирована для 64-битный Excel.

...