4

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

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

4

2 回答 2

3

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

你会遇到很多额外的麻烦,进程之间的通信已经够棘手了(你需要 Remoting 或 WCF),最难的部分是处理异常。一个进程轰炸而另一个幸存下来并且从未注意到有什么问题是不会很漂亮的。

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

于 2010-01-28T06:24:53.193 回答
2

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

于 2010-01-28T05:30:47.643 回答