我已經建立了這個小型的Web應用程序。它有一個activex控件通過javascript將非託管代碼返回到Silverlight應用程序中。在silverlight中,我對返回的值執行封送處理操作。當我只執行GetSize()的簡單操作時,會遇到一個stupefing錯誤。這讓我想起了我的問題:如果可以的話,是否可以在silverlight中進行一次marhsalling操作?編組silverlight中的非託管代碼
回答
Silverlight的安全模型和沙盒不允許「透明」(用戶代碼和應用程序)執行p/invokes,可信操作或任何此類。
如果您已經安裝並可用於網頁的ActiveX控件,則需要使用Silverlight的HTML互操作性功能來自己編組數據。有一個特定於Silverlight 2的MSDN article about the HTML bridge,但在Silverlight的新版本中也會發現它。
這假設您的ActiveX控件可以通過瀏覽腳本/ JavaScript訪問。
儘管某些數字和其他原語的編組在平臺中運行良好,但您最終可能會通過使用字符串將您的所有數據從ActiveX控件中移出,然後在Silverlight客戶端上解析它。
這可能至少啓用您的方案。
我想從activex通過JavaScript的字節數組,並進入silverlight。由於JavaScript只支持原生的非託管代碼,我無法發送我的字節數組。因此,我想到了執行一個簡單的編組操作,這也失敗了......有什麼辦法可以繞過這個? – vondip 2009-08-05 21:32:15
您可以編碼該字節數組。在JavaScript中,您是否可以遍歷字節數組並將其轉換爲十六進制字符串?然後你可以將它傳遞給Silverlight。 HTML互操作性功能是完成這個任務的方式,但是你必須在中間做一些工作。 – 2009-08-05 22:39:33
哇,我有一個巨大的字節數組(我的意思是,真的很大的東西類似於編碼圖像)是唯一的出路嗎? – vondip 2009-08-06 03:45:38
- 1. 託管代碼與非託管代碼
- 2. 將非託管C++代碼編譯爲託管代碼
- 3. 通多 - 從託管代碼維數組非託管代碼
- 4. .NET中的託管代碼和非託管代碼
- 5. 更改託管代碼中非託管代碼的內存值
- 6. 使用託管代碼中的非託管代碼
- 7. 在託管代碼中填充非託管數組
- 8. 允許託管環境中的託管代碼回撥非託管代碼
- 9. 託管代碼在非託管
- 10. 從託管代碼調用非託管代碼的性能
- 11. 非託管dll代碼
- 12. 從非託管代碼
- 13. MEF和非託管代碼
- 14. 在非託管C++代碼
- 15. 什麼是託管代碼和非託管代碼?
- 16. 如何使用託管代碼從非託管代碼?
- 17. 從非託管代碼獲取值到託管代碼
- 18. 在調試託管代碼時調試非託管代碼
- 19. 調試託管代碼和非託管代碼
- 20. C++ cli從非託管代碼調用託管代碼
- 21. 從託管代碼調用非託管代碼
- 22. C++/cli將託管代碼傳遞給非託管代碼
- 23. 從非託管代碼調用託管代碼
- 24. 釋放C#中的非託管代碼
- 25. 非託管代碼中的信號量
- 26. 呼叫/編組從C#DLL字符串非託管代碼
- 27. 託管代碼和非託管代碼之間的調用代碼
- 28. 託管C#中的自由非託管C代碼內存
- 29. 如何處理非託管代碼中的託管異常
- 30. 從Visual C++中的非託管代碼更新託管窗體
嗨,你可以考慮添加更多的信息 - stupefing錯誤,或更多關於你的GetSize()操作存在的信息? – 2009-08-05 17:35:27