我正在创建一个C#.Net应用程序,希望能够编译为“所有CPU”。我还想在该应用程序的UI中包含特定的ActiveX控件,但我尝试使用的ActiveX控件不支持32位。是否有一些技巧或解决方法可以让这个控件工作?将ActiveX控件嵌入Web浏览器控件中呢?这样做会有效吗?
你需要在一个单独的32位进程中运行ActiveX控件。这会很困难,因为它将拥有自己的窗口,不会成为64位进程UI的一部分。尽管SDK文档明确禁止,您可以尝试利用SetParent() API函数中内置的Windows 3应用程序兼容性。这可能有效。你将遇到许多额外的麻烦,进程间通信已经很棘手了(您需要Remoting或WCF),难点在于处理异常。一个进程崩溃而另一个进程幸存并且从未注意到有问题是不好的。也许平台目标选项开始听起来很有吸引力?