我們已經開發了一個帶有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