【发布时间】:2013-09-04 02:22:55
【问题描述】:
我创建了一个非常简单的程序并将其公开为 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";
}
}
}
我检查了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");
但是,我得到的只是启动时出现以下错误:
- $exception {“无法从注册表中读取密钥(来自 HRESULT 的异常:0x80040150 (REGDB_E_READREGDB))”} System.Exception {System.Runtime.InteropServices.COMException}
有趣的是,我可以通过导航到:Compuer\HKEY_CLASSES_ROOT\Tomor1.Form\CLSID 来查看注册表中的“密钥”
【问题讨论】:
标签: c# .net powerpoint office-interop