質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
ActiveX

ActiveXは、Microsoft社が開発したプログラミング技術群の総称。特定の技術ではなく、さまざまな技術を指しますが、一般的にActiveXといった場合は「ActiveXコントロール」を指します。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

0回答

224閲覧

ActiveXコントロールをWinFormsで使用したい。

TeraGackn

総合スコア0

ActiveX

ActiveXは、Microsoft社が開発したプログラミング技術群の総称。特定の技術ではなく、さまざまな技術を指しますが、一般的にActiveXといった場合は「ActiveXコントロール」を指します。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2024/09/12 10:37

実現したいこと

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として使用されていました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TeraGackn

2024/09/12 12:10

コメントありがとうございます。確かにActiveXコントロールは32-bitでビルドされたはずなので、関係あるかもしれません。一応、WinFormsプロジェクトはプラットフォームターゲットをx86に指定していますが、上述のエラーが出ています。明日、いただいたヒントを元に調査を進めてみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問