非常に単純なプログラムを作成し、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
(ただし、ここには示していません。正確な実装については、こちらを参照してください)。 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