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

4
我正在创建一个C#.Net应用程序,希望能够编译为“所有CPU”。我还想在该应用程序的UI中包含特定的ActiveX控件,但我尝试使用的ActiveX控件不支持32位。是否有一些技巧或解决方法可以让这个控件工作?
将ActiveX控件嵌入Web浏览器控件中呢?这样做会有效吗?
2个回答

3
你需要在一个单独的32位进程中运行ActiveX控件。这会很困难,因为它将拥有自己的窗口,不会成为64位进程UI的一部分。尽管SDK文档明确禁止,您可以尝试利用SetParent() API函数中内置的Windows 3应用程序兼容性。这可能有效。
你将遇到许多额外的麻烦,进程间通信已经很棘手了(您需要Remoting或WCF),难点在于处理异常。一个进程崩溃而另一个进程幸存并且从未注意到有问题是不好的。
也许平台目标选项开始听起来很有吸引力?

2

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接