發表文章

目前顯示的是有「Silverlight」標籤的文章

在SilverLight執行Native dll的方法

圖片
若想要叫用Client端Win32 Api的話可以使用DllImport的方法叫用 如下: [DllImport("User32.dll")] private static extern Boolean MessageBeep(uint beepType); 但若是透過自己寫的或ThirdParty的Native dll 則需使用Resource連結的方式 1.先將dll的屬性設為Resource及永遠複製 2.執行連結方法NativeDllHelper.SetupNativeDllFolder("TSCLIB.dll"); 此程式碼請至原作者提供的檔案下載 https://github.com/cureos/nativedll 以上的執行在本機Localhost,127.0.0.1都不會有問題,但在有網域或電腦名稱的網域 會出現"呼叫機器碼失敗。方法必須是安全性關鍵或安全性安全關鍵才能呼叫機器碼"或 "System.Security.SecurityException: 不允許檔案作業。拒絕存取路徑"..等錯誤 這是因為這些方法的執行因安全性的限制一定要在OOB(Out Of Browswer)下執行。 參考文章 http://cureos.blogspot.tw/2011/09/pinvoke-bundling-native-dlls-in.html

適用在SilverLight的byte與字串互轉

在SilverLight使用WebClient對Server端叫用網頁(.aspx or .ashx)取回Binary時,若網頁丟出例外, 在SilverLight收到的例外會是"遠端伺服器傳回一個錯誤: NotFound。 這樣的訊息在Client端根本不知道是發生什麼事,所以改成回傳一份訊息byte,寫法如下 Server 端 byte[] byteArray = System.Text.Encoding.Default.GetBytes(str); Response.Clear(); Response.BinaryWrite(byteArray); Response.End(); SilverLight string str = System.Text.Encoding.Default.GetString(byteArray); 但...此行程式在SilverLight不支援,所以無法使用。 參考別人寫的可以使用Base64轉,但..中文字不能轉,所以我沒用。 http://wincn.org/post/330.html   最後參考小朱的一段Byte與字串互轉的程式,測試後互轉沒問題 Server 端 byte[] byteArray = Encoding.UTF8.GetBytes ("發生例外!"); Response.Clear(); Response.BinaryWrite(byteArray); Response.End();   SilverLight byte[] byteArray = new byte[e.Result.Length]; e.Result.Read(byteArray, 0, byteArray.Length); string errorMsg= Encoding.UTF8.GetString (byteArray, 0, byteArray.Length);

前端Script如何存取SilverLight內的物件

圖片
功能:讓前端的Script可以即時與SilverLight應用程式作資料的存取互動 1.類別及屬性需加上Scriptable的Attribute