我创建了一个非常简单的程序并将其作为ActiveX控件公开。我想要做的是将此控件嵌入到PowerPoint幻灯片中。该方案的代码如下:PowerPoint幻灯片内的ActiveX控件
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