64位.NET应用程序中的32位ActiveX控件

时间:2010-01-28 05:13:05

标签: c# .net activex 32bit-64bit x86-64

我正在创建一个C#.Net应用程序,我希望能够为“所有CPU”编译。我还想在这个应用程序的UI中包含一个特定的ActiveX控件,但我试图使用的ActiveX控件不支持32位。是否有一些技巧或解决方法我可以使用这个控件来工作?

如何在Web浏览器控件中嵌入ActiveX控件?这甚至会起作用吗?

2 个答案:

答案 0 :(得分:2)

您无法在64位应用程序中加载32位组件,但您可以将组件包装在其自己的进程中,并使用IPC来利用组件的功能。当然,根据实际组件,这可能是不可行的。

答案 1 :(得分:2)

您必须在单独的32位进程中运行ActiveX控件。这将是困难的,它将有自己的窗口,不会成为64位进程的UI的一部分。尽管SDK文档明确禁止这样做,但您可以尝试利用SetParent()API函数中内置的Windows 3 appcompat。它可能会奏效。

你会有很多额外的麻烦,进程之间的通信很棘手(你需要远程处理或WCF),困难的部分是处理异常。一个进程爆炸与另一个幸存,从未注意到出现问题的过程并不会很好。

也许平台目标选项开始听起来很有吸引力?