我们已经开发了一个带有Silverlight 4的Intranet管理应用程序。我们被要求添加功能来调用使用Intranet SL App安装在客户端上的远程桌面工具。在用ASP.NET编写的工具的早期版本,我们只是增加了一个JavaScript函数来aspx页面像这样:Silverlight 4 MVVM:从viewmodel调用Javascript函数
function RunShellCommand()
{
var launcher = new ActiveXObject("WScript.Shell");
launcher.Run("mstsc.exe");
}
,并呼吁从ASP.NET。
现在很清楚,SL4正在沙箱中运行,并且我无法使用AutomationFactory创建WScript.Shell对象(浏览器模式不是选项)。
我想我可以圈住的问题,再次加入RunShellCommand在该SL4控制托管aspx页面的JavaScript方法,并通过
HtmlPage.RegisterScriptableObject("Page", this);
HtmlPage.Window.Invoke("RunShellCommand", "dummydata");
从我的ViewModel调用它。当我运行应用程序时,调试器跳过RegisterScriptableObject方法并退出。什么都没发生。 我的问题是如果我做错了什么或者如果这只是不会这样工作。 有没有可能我不能从视图模型做一个RegisterScriptableObject?
编辑:当我明确地尝试,围绕这两个方法的catch块,我从第一个方法中得到一个ArgumentException,指出当前实例没有可编写脚本的成员。当我删除第一个方法并只运行调用时,我得到一个浏览器错误,指出自动化服务器不能创建对象。那么是否真的没有办法(除了OOB模式)来做到这一点?
它确实是浏览器的安全设置。 – hoetz 2011-06-07 06:30:26