我創建了一個非常簡單的程序並將其作爲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