Да, это не может работать таким образом. Оболочка AxHost требует, чтобы ее дескриптор был создан до ее использования. Что требует, чтобы это был дочерний элемент управления в форме, метод Show () которого вызывается.
Обычно вы получаете две оболочки взаимодействия из элемента управления ActiveX, AxBlah.dll, которая содержит оболочку AxHost, и Blah.dll, которая упаковывает интерфейсы COM. Вам нужно всего лишь ссылаться на Blah.dll. Будет ли это работать, остается открытым вопросом, для многих элементов управления ActiveX требуется дескриптор окна для синхронизации потоков.
Если это не сработает, вам понадобится форма хоста. Вы можете сделать его невидимым, вставив этот код в класс формы:
protected override void SetVisibleCore(bool value) {
if (!IsHandleCreated) CreateHandle();
value = false;
base.SetVisibleCore(value);
}
Вам нужно вызвать Application.Run () для прокачки цикла сообщений.