Мне нужно добавить элемент управления ActiveX, написанный на C++, в C# WinForms, но мне не удалось этого добиться.
Когда я пытаюсь добавить элемент управления, возникает исключение нарушения прав доступа.
Среда разработки
- Visual Studio 2022
- .Net 8.0
- C# 12.0
- Цель платформы: x86
Код: Выделить всё
Private WithEvents control As VBControlExtender
Set control = Me.Controls.Add("foo.bar", "baz")
Код: Выделить всё
private AxControl control;
control = new AxControl("GUID corresponding to foo.bar");
control.Name = "baz";
this.Controls.Add(control); // the access violation exception occurs (0x0D4D90C4)
private class AxControl : AxHost
{
public AxControl(string id) : base(id)
{
}
}
Элемент управления ActiveX представляет собой 32-разрядную версию и уже зарегистрирован в 32-разрядной версии regsvr32.
Он также добавлен в ссылку COM в Visual Studio.
Преобразование с помощью aximp тоже не составило проблемы.
Я добавил его в набор инструментов. и попытался поместить его в форму D&D, но это тоже было НГ.
Я получил следующее сообщение.
Не удалось создать компонент «AxHost». Сообщение об ошибке: «Соединение с сервером потеряно.
Если вы что-нибудь заметите, буду признателен за ваши комментарии, даже если это что-то тривиальное.
Заранее спасибо». .
Подробнее здесь: https://stackoverflow.com/questions/789 ... p-winforms