页面通过JS 调用WinForm 组件
2010-08-25 14:20
555 查看
由于工作需要,最近开发了个页面通过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下,调用不成功。不知为何 。
注意以下几点:
第一,在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下,调用不成功。不知为何 。
相关文章推荐
- 原创:.NET中winform与webform互相通讯实例,CS调用BS页面的JS函数
- C# winForm webBrowser页面中js调用winForm类方法
- 前台页面通过JS调用Servlet访问到后台类
- [WinFrom]NET中winform与webform互相通讯实例,CS调用BS页面的JS函数
- 前台页面通过JS调用Servlet访问到后台类
- 前台页面通过JS调用Servlet访问到后台类
- NET中winform与webform互相通讯实例,CS调用BS页面的JS函数---转载
- iframe 大数据量传参 本地能调用远程页面 不存在跨域问题 js组件调用原理
- 在页面上通过js调用exe程序
- 最近接触到的一些js调用window窗体的属性及通过JavaScript获取页面大小
- js 通过window.external 调用 winform中的方法
- 通过asp js调用组件模式窗体showdialog,模式窗体却以非模式窗体显示
- js调用打印接口打印web页面之——使用lodop组件打印jsp web页面
- C# winForm webBrowser页面中js调用winForm类方法(转)
- webBrowser页面js调用Winform窗体函数
- Node.js的静态页面想通过jQuery的Ajax函数调用远程服务的措施无效
- 自动刷新网页,自动刷新当前页面,JS调用
- Android 与JS交互 调用本地相册在Html页面显示图片
- php从隐藏域传值给js,并通过post在其他页面取值
- JS通过Cookie判断页面是否为首次打开