Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用silverlight与客户端应用程序通信_Javascript_Silverlight_Com_Silverlight 4.0 - Fatal编程技术网

Javascript 如何使用silverlight与客户端应用程序通信

Javascript 如何使用silverlight与客户端应用程序通信,javascript,silverlight,com,silverlight-4.0,Javascript,Silverlight,Com,Silverlight 4.0,我目前正在用prism开发silverlight应用程序。从这个应用程序中,我需要能够向客户端应用程序发送命令或击键。实现这一目标的最佳方式是什么 我正在考虑的事情: Javascript可以使用ActiveX对象来使用DDE。(仅限于IE) Javascript可以与java小程序交互以使用DDE。(必须适当地对小程序进行签名) 如果浏览器用完,Silverlight 4可以访问COM对象。(我希望避免用完浏览器) 还有其他我忽略的选项吗?这是一个过度杀伤力,但是如果客户端应用程序在您的控制下

我目前正在用prism开发silverlight应用程序。从这个应用程序中,我需要能够向客户端应用程序发送命令或击键。实现这一目标的最佳方式是什么

我正在考虑的事情:

Javascript可以使用ActiveX对象来使用DDE。(仅限于IE)

Javascript可以与java小程序交互以使用DDE。(必须适当地对小程序进行签名)

如果浏览器用完,Silverlight 4可以访问COM对象。(我希望避免用完浏览器)


还有其他我忽略的选项吗?

这是一个过度杀伤力,但是如果客户端应用程序在您的控制下,您可以只托管一个小型http容器并将其发送到localhost:port from Silverlight:)

这是一个过度杀伤力,但是如果客户端应用程序在您的控制下,您可以只托管一个小型http容器并将其发送到本地主机:来自Silverlight的端口:)

尝试使用WCF双工服务


尝试使用WCF双工服务


除了其他建议之外,如果您使用类似于开发上述ActiveX控件的东西,您可以免费为控件获得一个完全相同的NPAPI接口。这将允许您在本机(C++)代码中创建一个控件,然后在所有主要浏览器中工作;然后,您可以通过Silverlight的JavaScript桥与该控件进行对话。当然,任何依赖于向另一个应用程序发送击键的应用程序都会非常脆弱,因此您必须非常好地设计您的界面,以确保当您控制另一个应用程序时,不会突然失控。

除了其他建议,如果您使用类似于开发您上面提到的ActiveX控件的东西,您可以免费为您的控件获得一个完全相同的NPAPI接口。这将允许您在本机(C++)代码中创建一个控件,然后在所有主要浏览器中工作;然后,您可以通过Silverlight的JavaScript桥与该控件进行对话。当然,任何依赖于向另一个应用程序发送击键的应用程序都会非常脆弱,因此您必须非常好地设计您的界面,以确保当您控制的另一个应用程序出现故障时,不会突然失控。

这不是用于服务器到SL客户端的交互吗,不是SL客户端到客户端?这是SL到SL还是SL到.NET还是什么?如果客户端应用程序是.NET,则可以使用双工服务作为客户端应用程序的一部分来承载。它可能有点重,但在抽象两个客户机之间的交互方面做得很好。理论上,您可以在客户机上的可执行文件中托管WCF双工服务,但我同意,这似乎有些过分。不过,它强调了一个观点,即使用Silverlight有四种有效的“到达沙箱之外”的方法:(1)Javascript;(2) 周转基金;(3) 插座;(4) COM互操作(运行OOB时)。如果SL在浏览器中运行,您可以以某种方式使用前三种方法中的任何一种来与机箱上运行的其他进程进行通信——您只需要对这些进程有足够的控制,以便Silverlight能够在它敲响时进入。我正在尝试使用的客户端应用程序可以实现我无法控制的所有意图和目的。最好的方法是一个接受CLI类型命令的应用程序。这不是用于服务器到SL客户端的交互,不是SL客户端到客户端的交互吗?这是SL到SL还是SL到.NET还是什么?如果客户端应用程序是.NET,则可以使用双工服务作为客户端应用程序的一部分来承载。它可能有点重,但在抽象两个客户机之间的交互方面做得很好。理论上,您可以在客户机上的可执行文件中托管WCF双工服务,但我同意,这似乎有些过分。不过,它强调了一个观点,即使用Silverlight有四种有效的“到达沙箱之外”的方法:(1)Javascript;(2) 周转基金;(3) 插座;(4) COM互操作(运行OOB时)。如果SL在浏览器中运行,您可以以某种方式使用前三种方法中的任何一种来与机箱上运行的其他进程进行通信——您只需要对这些进程有足够的控制,以便Silverlight能够在它敲响时进入。我正在尝试使用的客户端应用程序可以实现我无法控制的所有意图和目的。最好的方法是一个接受CLI类型命令的应用程序。。。我在这里有点困惑。您可以使用Firebreath包装ActiveX控件,以便它可以在任何浏览器中使用?不完全是这样-您使用Firebreath框架编写控件,并且在编译控件时,它会为IE生成ActiveX接口(在后台使用ATL)和为其他所有内容生成NPAPI接口。相同的DLL承载两个接口,一旦安装并注册,相同的JavaScript将在IE、Firefox和Chrome上工作。有道理?唯一的缺点(比如)是Firebreath要求您使用CMake作为控件的构建系统,这有点痛苦,但可能是值得的。嗯,是的,这是有道理的。绝对是一个可行的选择,+1。我需要决定这是否比制作java小程序好。谢谢,所以。。。我在这里有点困惑。您可以使用Firebreath包装ActiveX控件,以便它可以在任何浏览器中使用?不完全是这样-您使用Firebreath框架编写控件,并且在编译控件时,它会为IE生成ActiveX接口(在后台使用ATL)和为其他所有内容生成NPAPI接口。相同的DLL承载两个接口,一旦安装并注册,相同的JavaScript将在IE、Firefox和Chrome上工作。有道理?唯一的缺点(比如)是Firebreath要求您使用