3


0

64ビット.NETアプリの32ビットActiveXコントロール

「すべてのCPU」用にコンパイルできるようにしたいC#.Netアプリケーションを作成しています。 また、このアプリのUIに特定のActiveXコントロールを含めたいのですが、使用しようとしているActiveXコントロールは32ビットをサポートしていません。 このコントロールを機能させるために使用できるトリックや回避策はありますか?

ActiveXコントロールをWebブラウザコントロールに埋め込むのはどうですか? これでもうまくいくでしょうか。

2 Answer


2


64ビットアプリケーションに32ビットコンポーネントを読み込むことはできませんが、コンポーネントを独自のプロセスでラップし、IPCを使用してコンポーネントの機能を活用することができます。 もちろん、これは実際のコンポーネントによっては実行できない場合があります。


2


ActiveXコントロールを別の32ビットプロセスで実行する必要があります。 それは難しくなります。64ビットプロセスのUIの一部にはならない独自のウィンドウがあります。 SDKドキュメントでは明示的に禁止されていますが、SetParent()API関数に組み込まれているWindows 3 appcompatを活用することもできます。 それはうまくいくかもしれません。

さらに多くのトラブルが発生します。プロセス間の通信は非常にトリッキー(リモーティングまたはWCFが必要)で、難しい部分は例外を処理します。 一つのプロセスが生き残り、何かが間違っていることに気付かないことで他のプロセスが爆撃することは、きれいではありません。

おそらく、プラットフォームターゲットオプションは魅力的に聞こえ始めますか?