.NET-приложение, за которое я отвечаю, использует сторонний элемент управления, который доступен только как 32-битный компонент COM. Некоторое время я бился головой о стены, пытаясь найти способ, позволяющий компоненту и приложению работать вместе в 64-битном режиме. Мы получили некоторую помощь от поставщика элементов управления - они не планируют поставлять 64-битную версию компонента в ближайшее время, но они подключили решение C #, которое использует элемент управления WebBrowser для загрузки компонента, и решение C ++, которое использует некоторую забавную OLE. код для получения ссылки на интерфейс элемента управления из WebBrowser.
Хорошей новостью является то, что код выполняет то, что должен делать; Компонент корректно загружается в 64-битном решении, и я стараюсь изо всех сил использовать свои старые, точные знания ATL, чтобы пробиться через решение C ++, чтобы выяснить, как извлечь интерфейс управления в наш C #.
Меня беспокоит то, что я недостаточно хорошо понимаю эту конфигурацию, чтобы определить, с какими проблемами я могу столкнуться с нашим приложением. Кто-нибудь сделал что-нибудь в этом роде? Мое главное беспокойство заключается в том, что мы могли бы начать видеть таинственные сбои, которые я в конечном итоге проследил до значения, искаженного 32-битным элементом управления, и я вернусь туда, откуда начал.
Элементом управления, для справки, является EModelViewControl от Solidworks, который включен в облегченную программу просмотра EDrawings. Это не особенно сложный элемент управления, хотя их автоматическая настройка немного интересна.