32-разрядный элемент управления ActiveX в 64-разрядном приложении .NET - PullRequest
3 голосов
/ 28 января 2010

Я создаю приложение на C # .Net, которое хочу компилировать для «Все процессоры». Я также хочу включить определенный элемент управления ActiveX в пользовательский интерфейс этого приложения, но элемент управления ActiveX, который я пытаюсь использовать, не поддерживает 32-разрядную версию. Есть ли какой-то трюк или обходной путь, который я могу использовать, чтобы заставить этот элемент управления работать?

Как насчет встраивания элемента управления ActiveX в элемент управления веб-браузера? Будет ли это даже работать?

Ответы [ 2 ]

2 голосов
/ 28 января 2010

Вы должны запустить элемент управления ActiveX в отдельном 32-разрядном процессе. Это будет сложно, у него будет собственное окно, которое не будет частью пользовательского интерфейса вашего 64-битного процесса. Хотя это прямо запрещено документами SDK, вы можете попытаться воспользоваться преимуществами приложения для Windows 3, встроенного в функцию API SetParent (). Это может сработать.

У вас будет много дополнительных проблем, связь между процессами достаточно сложна (вам потребуется Remoting или WCF), сложная часть связана с исключениями. Один процесс бомбит, а другой выживает и никогда не замечает, что что-то не так, не будет симпатичным.

Возможно, опция Platform Target звучит привлекательно?

2 голосов
/ 28 января 2010

Вы не можете загрузить 32-битные компоненты в 64-битное приложение, но вы можете обернуть компонент в его собственный процесс и использовать IPC для использования возможностей компонента. Конечно, это не может быть осуществимо в зависимости от фактического компонента.

...