我已经为针对Windows Mobile6.1的手持扫描仪创建了一个解决方案。现在,我需要知道是否可以将此解决方案嵌入到ActiveX中,以便在IE8 (而不是移动设备)上运行。这是一个备份,以防手持设备不可用。显然,扫描功能不起作用,但除此之外,是否有可能转换它?我不想管理同一代码的多个副本。
发布于 2012-09-14 03:42:20
不,您不能。Compact Framework不支持EE托管,因此无法将Compact Framework的任何内容直接编译为COM/ActiveX对象。
您是否可以创建一个桌面C#项目,然后拉入代码文件并将其编译为ActiveX控件?这取决于你想做多少工作。至少,您必须为所有公开的类定义COM接口,并向Guid、InterfaceType和ComVisible等类添加属性,以及为每个属性添加Didpid。您必须确保所有公开的类型都是支持COM的,并且还具有接口。尝试保持该代码库仍然可编译为您现有的CF应用程序本身就是一个巨大的挑战。
当然,你会遇到任何P/Invoke的问题(这是一个非常罕见的CF应用程序,它不需要它们)。您必须在另一个(或更多)接口中抽象这些内容。并且任何UI级别的窗口处理都可能需要更改。
当你把所有这些工作起来的时候,你可能已经花了更多的时间来完全重写浏览器的应用程序,而且它可能不会像重写那样工作得很好。
发布于 2012-09-20 04:29:47
这似乎表明这在某种程度上是可能的:
http://www.dreamincode.net/forums/topic/38890-activex-with-c%23/
然而,我和另一位开发人员在移动浏览器上尝试了几个星期都没有成功。我不知道是项目类型本身还是设备的限制,但它就是不想玩。
正如ctacke所建议的,我会给这个想法一个非常宽广的搁浅。ActiveX是一项古老的技术,它将你限制在IE上。如果可以的话,我强烈建议您使用另一种方法。
https://stackoverflow.com/questions/12410597
复制相似问题