「すべての CPU」用にコンパイルできるようにしたい C#.Net アプリケーションを作成しています。また、このアプリの UI に特定の ActiveX コントロールを含めたいのですが、使用しようとしている ActiveX コントロールは 32 ビットをサポートしていません。このコントロールを機能させるために使用できるトリックまたは回避策はありますか?
ActiveX コントロールを Web ブラウザ コントロールに埋め込む場合はどうでしょうか。これでも機能しますか?
「すべての CPU」用にコンパイルできるようにしたい C#.Net アプリケーションを作成しています。また、このアプリの UI に特定の ActiveX コントロールを含めたいのですが、使用しようとしている ActiveX コントロールは 32 ビットをサポートしていません。このコントロールを機能させるために使用できるトリックまたは回避策はありますか?
ActiveX コントロールを Web ブラウザ コントロールに埋め込む場合はどうでしょうか。これでも機能しますか?
別の 32 ビット プロセスで ActiveX コントロールを実行する必要があります。それは難しいでしょう。64 ビット プロセスの UI の一部にならない独自のウィンドウが必要です。SDK ドキュメントでは明示的に禁止されていますが、SetParent() API 関数に組み込まれている Windows 3 appcompat を利用することができます。それはうまくいくかもしれません。
さらに多くの問題が発生します。プロセス間の通信は非常にトリッキーです (Remoting または WCF が必要です)。難しいのは例外の処理です。一方のプロセスが爆撃し、もう一方のプロセスが生き残り、何かがおかしいことにまったく気付かないというのは、あまりよいことではありません。
おそらく、プラットフォーム ターゲット オプションは魅力的に聞こえ始めるでしょうか?
32 ビット コンポーネントを 64 ビット アプリケーションにロードすることはできませんが、コンポーネントを独自のプロセスでラップし、IPC を使用してコンポーネントの機能を活用できます。もちろん、これは実際のコンポーネントによっては実行できない場合があります。