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

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

如何在Web浏览器控件中嵌入ActiveX控件呢? 这会工作吗?

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

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

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

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