Я создал очень простую программу и выставил ее как элемент управления ActiveX. То, что я пытаюсь сделать, это встроить этот элемент управления в слайд PowerPoint. Код программы выглядит следующим образом:Управление ActiveX внутри слайда PowerPoint
namespace WindowsFormsApplication1
{
[ProgId("Tomor.Form1")]
[ClassInterface(ClassInterfaceType.AutoDispatch)]
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
button1.Text = "Clicked";
}
}
}
Я cheked в Make the assembly COM-visible
, а также проверил Register for COM-interop
. Я также внедрил методы RegisterClass
и UnregisterClass
(но не показаны здесь, см. this, для точной реализации) и смогли успешно зарегистрировать его с помощью regasm.exe. Я также могу получить доступ к интерфейсу из другого проекта, используя Tomor1.Form
. Теперь я пытаюсь вставить этот элемент управления в PowerPoint слайд следующим образом:
PowerPoint.Shape s = Sld.Shapes.AddOLEObject(0, 0, 400, 400, "Tomor.Form1");
Однако, все, что я получаю следующее сообщение об ошибке при запуске:
- $ исключение { "Не удалось прочитать ключ из реестра (Исключение из HRESULT: 0x80040150 (REGDB_E_READREGDB)) "} System.Exception {System.Runtime.InteropServices.COMException}
Интересно, что я вижу «ключ» в реестре, перейдя по ссылке: Compuer\HKEY_CLASSES_ROOT\Tomor1.Form\CLSID