Silverlight和COM互操作

3

我如何与Silverlight中的COM控件进行交互?

在我的项目中,我有一个旧的ActiveX身份验证控件,我想在我的Silverlight应用程序中利用它。简单地说,该控件需要一些参数,提示用户输入凭据或令牌,并引发事件。我需要从我的控件设置参数,并以某种方式将事件数据传递给我的控件。

此外,我希望UI尽可能地看起来相同。

有哪些最佳方法可以实现这一点?

2个回答

8

3
据我所知,Silverlight没有提供直接使用COM的方法 - 没有P/Invoke或COM互操作 - 并且沙箱也不允许您在任何情况下这样做。但是,您可以在浏览器中托管ActiveX控件与Silverlight应用程序一同使用(显然仅限于IE),然后编写一些浏览器内JavaScript代码来与它进行交互 - JavaScript可以与ActiveX和Silverlight进行交互。
不过,我认为您不能合理地在Silverlight应用程序中托管ActiveX控件。您能做到的最接近方法是如上所述,在正确的位置将ActiveX控件(在浏览器DOM中)放置在Silverlight画布的顶部,以便它看起来像是单个UI。不确定是否会产生任何渲染问题。

谢谢 Pavel。这正是我期待的,只是希望可能有其他方法我可能错过了。我不担心它只在IE上运行,因为这本来就是使用ActiveX工作的乐趣。 - Will I Am
8
不过,对于最新的Silverlight来说,这并不完全正确;Silverlight 4 现在具备了COM互操作性。 - Robert P
Silverlight 5 也有 P/Invoke,这个答案已经过时了。 - John

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