実現したいこと
ActiveXコントロールをWinFormsで使用したいです。コントロールとしてフォーム画面に追加したいのですが、上手くいっていません。
環境はVisual Studio 2022, C#です。
そもそも、私がActiveXコントロールと思い込んでいるだけで、実はそうではない可能性もあるのかなと思っています。五里霧中な状況なので、少しでも気になることがあればコメントいただけると助かります!
発生している問題・分からないこと
AxHostを使用した際は、"コード 3221226525 (0xc000041d) で終了しました。"と出力されて、アプリケーションが終了します。
また、コントロールで"aximp.exe MyDLL.dll"と叩いた際は、"登録されたActiveXコントロールは見つかりませんでした。"と出力されています。regsvr32を実行して、レジストリエディタやoleview.exeで当該COMオブジェクトが登録されていることは確認できています。
該当のソースコード
C#
1 public partial class Form1 : Form 2 { 3 public Form1() 4 { 5 InitializeComponent(); 6 string progID = "MyProgID"; 7 Type comType = Type.GetTypeFromProgID(progID); 8 Guid clsid = comType.GUID; 9 ActiveXControl axCtl = new ActiveXControl(clsid.ToString()); // guidはレジストリエディタやoleview.exeで表示されるものと同一であることを確認しています。 10 this.Controls.Add(axCtl); // The error occurs in this line; Error Code 3221226525 (0xc000041d) 11 } 12 } 13public class ActiveXControl : AxHost 14 { 15 public ActiveXControl(string progID) : base(progID) 16 { 17 } 18 } 19
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
ChatGPTに尋ねたところ、AxHostを勧められました。一方で、AxHostは必ずしも全てのActiveXコントロールを扱えるわけではないとも返答がありました。
補足
C#のWinFormプロジェクト上で、当該COMオブジェクトの参照を追加したのち、当該コントロールのクラスのインスタンスを作成することはできていますが、Controlに型変換することはできず、フォーム画面のコントロールに追加することはできていません。また、フォーム画面のデザインビューで、ツールボックスから当該コントロールを追加しようとした際は、「コンポーネント'AxHost'を作成できませんでした。エラーメッセージ:'サーバーへの接続が失われました'`」と表示されます。
VB6では、当該コントロールはVBControlExtenderとして使用されていました。
あなたの回答
tips
プレビュー