1

私が担当している.NETアプリケーションは、32ビットCOMコンポーネントとしてのみ使用可能なサードパーティのコントロールを使用しています。コンポーネントとアプリを64ビットモードで連携させる方法を模索している間、壁に頭をぶつけてきました。コントロールベンダーからいくつかの助けを得ました-彼らはすぐにコンポーネントの64ビットバージョンを提供する予定はありませんが、WebBrowserコントロールを使用してコンポーネントをロードするC#ソリューションといくつかの楽しいOLEを使用するC++ソリューションを添付しましたWebBrowserからコントロールのインターフェイスへの参照を掘り下げるコード。

幸いなことに、コードは本来の機能を果たします。コンポーネントは64ビットソリューション内に正しく読み込まれます。ATLに関する古い知識を浚渫して、C ++ソリューションを調べ、制御インターフェイスをC#に取得する方法を見つけます。

私の懸念は、この構成を十分に理解していないため、アプリがどのような問題にさらされている可能性があるかを判断できないことです。誰かがこの性質の何かをしましたか?私の主な懸念は、不思議なクラッシュが発生し始める可能性があることです。これは、最終的に32ビットコントロールによって値が変更されたことにまでさかのぼり、最初の場所に戻ります。

参考までに、コントロールはSolidworksのEModelViewControlであり、EDrawings軽量CADビューアに含まれています。自動化のセットアップは少し興味深いものですが、特に複雑なコントロールではありません。

4

1 に答える 1

3

32ビットCOMコンポーネントを、64ビットアプリケーションから通信できるアウトプロセスCOMサーバーでラップできるはずです。

これらの関連トピックには、いくつかの詳細と参照があります。

32ビットVB6COMオブジェクトを使用した64ビットC#

x64.NETからx86COMにアクセスします

于 2009-10-05T21:59:09.220 に答える