网站通过IE自定义协议打开客户端

最近项目需要,里面有一功能是:网站上打开客户端,客户端是用WPF开发的。相信在实现该功能的过程中,很多同志遇到这样或那样的问题。以下本人项目中遇到的问题:

1 打开客户端,通过windows.open()方法会弹出窗口,用户体念很差

2 用IE自定义协议传递参数的问题

3 调用windows.open(协议),打开客户无法最大化或者正常弹出

用IE自定义协议打开的思路,就不在该篇中介绍,前面的博客有详细的说明。

直接贴上网站打开客户端的步骤,用户体验很好哟


1 打开客户端,用IE自定义协议实现

protocolTest是客户端安装过程中注册的自定义协议

 function openClient( )
        {
            if(clientArg=="")
                return;
            try
            {
                $("#buyordownload").dialog('close');     
                if(loginstate&&returnUrl!="")
                {
                    location.href = returnUrl;
                }
                debugger;
                window.location="protocolTest://" + clientArg;   //这里不能使用windows.open()方法,要不会弹出窗口,用户体验很差            
            }
            catch( e )
            {}
        }
2  客户端  

ShowWindow使客户端窗口最大化

 private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
        {
            switch (msg)
            {
                case WM_COPYDATA:
                    CopyDataStruct cds = (CopyDataStruct)Marshal.PtrToStructure(lParam, typeof(CopyDataStruct));
                    string param = cds.lpData;                   
                    this.Activate();
                    try
                    {
                        IntPtr hWndPtr = FindWindow(null, "客户端名字");
                        ShowWindow(hWndPtr, 3);
                    }
                    catch(Exception ex)
                    {}
                    break;
            }

            return IntPtr.Zero;
        }      

是不是很简单,京东、QQ就是用该方式实现自动调用客户端的,不过小小的卖弄下,该项目比京东客户端体验跟要好哟,脸皮厚了以下 ,我只是小屁孩啦,嘿嘿!

你可能感兴趣的:(网站通过IE自定义协议打开客户端)