【发布时间】:2011-06-06 13:30:23
【问题描述】:
我们使用 Silverlight 4 开发了一个 Intranet 管理应用程序。我们被要求添加调用远程桌面工具的功能,该工具安装在使用 Intranet SL 应用程序的客户端上。在用 ASP.NET 编写的工具的早期版本中,我们只是向 aspx 页面添加了一个 Javascript 函数,如下所示:
function RunShellCommand()
{
var launcher = new ActiveXObject("WScript.Shell");
launcher.Run("mstsc.exe");
}
并从 ASP.NET 中调用它。
现在很明显 SL4 在沙箱中运行,我不能使用 AutomationFactory 创建 WScript.Shell 对象(不能退出浏览器模式)。
我想我可以通过再次在托管 SL4 控件的 aspx 页面中添加 RunShellCommand javascript 方法并通过调用它来绕过这个问题
HtmlPage.RegisterScriptableObject("Page", this);
HtmlPage.Window.Invoke("RunShellCommand", "dummydata");
来自我的 ViewModel。当我运行应用程序时,调试器只是跳过 RegisterScriptableObject 方法并退出。没发生什么事。 我的问题是如果我做错了什么,或者这不会以这种方式工作。 是否有可能我不能从视图模型中执行 RegisterScriptableObject?
编辑:当我明确地在两个方法周围放置一个 try, catch 块时,我从第一个方法中得到一个 ArgumentException,说明当前实例没有可编写脚本的成员。当我删除第一个方法并仅运行 Invoke 时,我收到一个浏览器错误,指出自动化服务器无法创建对象。那么真的没有办法(OOB模式除外)吗?
【问题讨论】:
标签: javascript silverlight mvvm