我正在创建一个C#.Net应用程序,我希望能够为“所有CPU”编译。我还想在这个应用程序的UI中包含一个特定的ActiveX控件,但我试图使用的ActiveX控件不支持32位。是否有一些技巧或解决方法我可以使用这个控件来工作?
如何在Web浏览器控件中嵌入ActiveX控件?这甚至会起作用吗?
答案 0 :(得分:2)
您无法在64位应用程序中加载32位组件,但您可以将组件包装在其自己的进程中,并使用IPC来利用组件的功能。当然,根据实际组件,这可能是不可行的。
答案 1 :(得分:2)
您必须在单独的32位进程中运行ActiveX控件。这将是困难的,它将有自己的窗口,不会成为64位进程的UI的一部分。尽管SDK文档明确禁止这样做,但您可以尝试利用SetParent()API函数中内置的Windows 3 appcompat。它可能会奏效。
你会有很多额外的麻烦,进程之间的通信很棘手(你需要远程处理或WCF),困难的部分是处理异常。一个进程爆炸与另一个幸存,从未注意到出现问题的过程并不会很好。
也许平台目标选项开始听起来很有吸引力?