• WebForm中调用WinForm


    最近一直在研究winForm和webForm之间的调用,大家都知道,winForm是CS架构,webForm是BS架构,两种架构是不能直接通信的,那么真的就一点儿办法都没了吗?其实不然。

    看了网上很多资料,我总结出有两种方式可以实现。

    1)首先客户端需要用注册表写入协议,通过协议去找已经安装在客户端的winForm的exe文件,这时可以给窗体传入参数,例如 “helloworld://你个猪头”, helloworld是协议,后面”你个猪头“是传入的字符串。当然winForm的main方法写法也有不同,需要得到参数(也可以不要参数,如果不需传参,直接调用)

            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main(string[] args)
            {
                //Application.EnableVisualStyles();
                //Application.SetCompatibleTextRenderingDefault(false);
                //Application.Run(new Form1());
    
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Form1 frm = new Form1();
                if (args.Length > 0)
                {
                    frm.strArgs = args[0];
                    MessageBox.Show(args[0]);
                    Application.Run(frm);
                }
                else
                {
                    Application.Run(new Form1());
                }
    
            }

     注册表中指向调用winForm所在的exe文件路径即可,具体代码详见测试案例;当然调用也很简单 如 <a href="helloworld://你个猪头"><img border="0" SRC='hello.jpg' alt="测试"></a>,后面附上测试案例。

    2)第二种就是调用active插件,也叫ocx插件,需要客户端注册一个插件,我们可以新建一个”windows窗体控件库“来实现,具体方法我也不多讲,可以参考:http://hi.baidu.com/dosonet/blog/item/7ced5d929411a2ada877a446.html 

    我简单说说我当时遇到的困难和特别需要注意的:

    a. 在一个”windows窗体控件库“项目中,可以新建多个用户控件窗体,但是如果要网页上正常调用,必须实现IObjectSafety接口,具体实现可以完全ctrl + c, ctrl + v,并且需要指定完全不同的guid值,否则不能正常调用。

    b. 不同用户控件窗体是不能相互调用的,如果要调用不同窗体,直接新建Form就行,然后可以采取用户控件中弹出Form来实现。详见我的测试案例。

     

    总结下,其实winForm中实现active插件也不是很难,只是winForm必须基于.NET framework来工作,所以我建议winForm的版本在2.0,不要升级到3.0及其以上,因为安装在客户上,2.0只需20M左右,3.0则要几百M,如果不是必须用C#来实现的话,用C,C++,或者delphi更好……

    时间不早了,现放出测试案例,有兴趣的同学可以 下载

     

  • 相关阅读:
    Docker Registry 管理镜像
    Dockerfile 构建镜像
    制作docker镜像
    docker 使用及基本命令
    centos7 安装 docker
    spring-boot-devtools 热部署
    mysql库复制
    windows下安装和设置gradle
    springboot项目搭建
    下载和安装
  • 原文地址:https://www.cnblogs.com/lanjun/p/2562957.html
Copyright © 2020-2023  润新知