由於工作需要,最近開發了個頁面通過JS 調用Winform的程序。
注意以下幾點:
第一,在Winform 組件 中,需要在Js中調用 的中窗體對象,需要加如下標籤:
[Guid("53CDE3DE-1005-43B8-87C5-F1899BF0AC54")]----此GUID可以自己生成一個。
[System.Runtime.InteropServices.ComVisible(true)]
public partial class FlowWrapper {...}
在 我用到的FlowWrapper 類中,有一些public 方法,用來通過JS傳入參數,如:
/// <summary>
/// 設置數據
/// </summary>
/// <param name="key">鍵</param>
/// <param name="value">值</param>
public void SetData(string key, string value)
第二,把開發好的Winform 組件打包成安裝包。放在Web程序中,提供給用戶下載安裝。(其實就是把相關的動態庫複製到用戶機子上,還有就是在註冊表中註冊)
第三,在我的頁面中,通過如下代碼進行調用組件:
<body >
<object id="FlowOcx" classid="clsid:53CDE3DE-1005-43B8-87C5-F1899BF0AC54" width="80%"
height="80%" viewastext>
</object>
<script type="text/javascript">
function startOcx()
{
try
{
var id = "<%=FlowID%>";
var type= "<%=ActionType%>";
var ocx = document.getElementById('FlowOcx');
ocx.SetData("Key_InnerControl", "InnerControl_FlowDefine");
ocx.SetData("Key_ActionType", type);
--傳入參數
ocx.SetData("Key_FlowID", id);
---傳入參數
ocx.SetData("Key_StartControl", "");
}
catch (ex)
{
alert(ex.description);
alert("流程組件沒有安裝,需要下載安裝!");
window.location.href = "../../Tools/FlowOcxSetup.msi";
}
}
startOcx();
</script>
其實也很簡單的,但,這個現在只能 在IE下能成功,在Firefox下,調用不成功。不知爲何 。