【发布时间】:2011-02-04 21:07:41
【问题描述】:
System.Diagnostics 程序集是 Silverlight CLR 框架的一部分,但它只包含与调试相关的类,Process 类不可用。有没有其他方法可以从 Silverlight 应用程序启动外部进程?
【问题讨论】:
标签: silverlight process
System.Diagnostics 程序集是 Silverlight CLR 框架的一部分,但它只包含与调试相关的类,Process 类不可用。有没有其他方法可以从 Silverlight 应用程序启动外部进程?
【问题讨论】:
标签: silverlight process
如果您在浏览器中或作为标准的浏览器外应用程序运行您的应用程序,则能够启动另一个进程将破坏 Silverlight 模型,允许您的应用程序访问浏览器沙箱之外的机器。
完全信任的应用程序将能够做到这一点。
为什么要启动另一个进程?
【讨论】:
如果您在 ASPX 页面中使用 Silverlight,您可以使用 HtmlDocument.Window.Invoke 调用 JavaScript 函数,该函数又可以调用页面中的静态方法(使用 WebMethod 属性)
article here 很好地描述了 JS/ASPX 桥。
善良,
丹
注意:不确定我是否同意您的尝试;只是想帮助你做到这一点:)
【讨论】:
使用来自浏览器应用程序的提升信任(我们应该简称 ETOOB 或 OOBET)Silverlight 4 应用程序,如果它是 COM 自动化服务器,您可以在新进程中启动新应用程序。例如:-
dynamic excel = ComAutomationFactory.CreateObject("Excel.Application");
应该在自己的进程中启动 Excel。
【讨论】:
没有简短的答案,但有一个复杂的答案......
如果您运行的是 SL4 Out-Of-Browser,并且您表示您可以运行 elivated(这实际上意味着 SL 不会在 IE 保护模式下运行,而是作为标准应用程序...),有一种方法可以你通过使用 WMI 基本上可以做任何你想做的事情。这篇博文将为您提供帮助 - http://justinangel.net/CuttingEdgeSilverlight4ComFeatures。 请记住,这是高端花哨的编码,所以请注意自己;)
在LearningWindosPhone.com 网站上有Windows Phone 上的two great sample chapters 和Windows Phone 上的Silverlight。有很棒的 Windows Phone Trainng material,别忘了Windows Phone Develoeprs Blog
【讨论】:
是的,您可以在 Silverlight 4 中(在提升完全信任的浏览器外)中,例如:
dynamic cmd = AutomationFactory.CreateObject("WScript.Shell");
cmd.Run("calc.exe", 1, true);
【讨论】: