我已经为针对 Windows Mobile 6.1 的手持式扫描仪创建了一个解决方案。现在我需要知道是否可以将此解决方案嵌入到 ActiveX 中以在 IE8(非移动设备)上运行。这是一个备份,以防手持设备不可用。显然扫描功能不起作用,但除此之外,是否可以转换它?我不想管理同一代码的多个副本。
最佳答案
不,你不能。 Compact Framework 不支持 EE Hosting,因此无法将 Compact Framework 的任何内容直接编译为 COM/ActiveX 对象。
您能否创建一个桌面 C# 项目,然后提取代码文件并将其编译为 ActiveX 控件?这取决于您想做多少工作。至少,您必须为所有公开的类定义 COM 接口(interface),并向类添加属性,如 Guid、InterfaceType 和 ComVisible,以及向每个属性添加 Didpid。您必须确保所有公开的类型都具有 COM 功能并且也具有接口(interface)。尝试保持该代码库仍然可编译,因为您现有的 CF 应用程序本身就是一个巨大的挑战。
当然,任何 P/Invoke 都会出现问题(这是一个非常罕见的不需要它们的 CF 应用程序)。您必须在另一个(或更多)接口(interface)中抽象它们。 UI 级别的任何窗口处理都可能需要更改。
当您完成所有这些工作时,您可能会花费更多的时间,而不仅仅是完全重写浏览器应用程序,而且它可能不会像重写那样工作。
关于windows-mobile - 将.net紧凑框架转换为activex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12410597/