浏览器打开客户端_请在微信客户端打开链接 浏览器怎么打开 - CSDN
精华内容
参与话题
  • 浏览器启动客户端程序的方法

    千次阅读 2013-11-22 13:42:51
    浏览器启动客户端程序的方法,除了使用Asynchronous Pluggable Protocols协议来自定义协议触发程序外,还可以通过ActiveX控件的JavaScript方法来启动客户端,并且能传递参数或调用客户端程序的方法,就可以指挥...
    从浏览器页面上,启动用户本地的客户端程序的方法,常见的有两种。
    一、Asynchronous Pluggable Protocols协议方式
           MSDN或网络上搜索,即可找到相应的方法。
           从浏览器启动客户端程序 http://blog.csdn.net/problc/article/details/7802974    
    二、通过ActiveX控件来启动本地程序——JavaScipt方法调用形式
           通过JavaScipt方法启动本地程序后,如果需要可以传递参数或调用客户端程序的接口,分以下几步介绍:
        1)制作一个ActiveX控件对象,从网络也能找到相应的参考。
        2)为ActiveX控件增加打开客户端程序的接口,如openExeClient
              =》检测客户端程序的注册表信息,是否存在。如果不存在,则表示客户端程序未安装,则提示安装
              =》根据target找到客户端程序的路径
              =》打开客户端程序
             此时,这个客户端程序,就归你指挥了。
        3)传递参数给客户端程序
            可以通过MFC的Message消息方法,SendMessage给客户端;当然也可通过其他方式,传递参数给客户端,以控制客户端程序的动作。
    如果需要更详细的信息,请QQ 1421067726联系我,相信有很多朋友都需要。
    展开全文
  • 1、浏览器若为IE: function doClientStatus(requisitionNum,runNum,status){ //startMinaClient(requisitionNum,runNum,status);//向服务器传参 window.oldOnError = window.onerror; window.onerror = ...

    1、浏览器若为IE:

    function doClientStatus(requisitionNum,runNum,status){
    	//startMinaClient(requisitionNum,runNum,status);//向服务器传参
    	window.oldOnError = window.onerror;
    	window.onerror = function (err) {
    		if (err.indexOf('utomation') != -1){
    			alert("命令已经被用户禁止!请在ie选项的安全模块将此网站加入<可信站点>并<启动>该自定义级别中的'对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本'选项,之后<刷新>页面");
    			return true;
    		}else
    			return false;
    	};
    
    	var command = 'D:\\ACME\\win32_vc2008_desktop\\LogMonitor.exe';
    
    //	command = command + ' 10.11.11.19 1234 -C';
    	command = command + ' <%=serverIP%> <%=clientPORT%> -C';
    	var wsh = new ActiveXObject('WScript.Shell');    //谷歌浏览器不支持
    	if (wsh) {
    		wsh.Run(command);
    	}
    	wsh = null;
    	window.onerror = window.oldOnError;
    }

    2、若浏览器为谷歌:

    以上方法无用,需要写注册表。

    Windows Registry Editor Version 5.00
    [HKEY_CLASSES_ROOT\ACME.1]
    @="URL:ACME.1 Protocol Handler"
    "URL Protocol"=""
    [HKEY_CLASSES_ROOT\ACME.1\shell]
    [HKEY_CLASSES_ROOT\ACME.1\shell\open]
    [HKEY_CLASSES_ROOT\ACME.1\shell\open\command]
    @="D:\ACME\win32_vc2008_desktop\LogMonitor.exe 11.111.11.11 8888 -C"

    说明:

    Windows Registry Editor Version 5.00
    [HKEY_CLASSES_ROOT\ACME.1]                    //ACME.1名称自定义,HKEY_CLASSES_ROOT根目录下
    @="URL:ACME.1 Protocol Handler"               //数据(ACME.1下)
    "URL Protocol"=""                             //名称(ACME.1下)
    [HKEY_CLASSES_ROOT\ACME.1\shell]              //只建立目录
    [HKEY_CLASSES_ROOT\ACME.1\shell\open]         //只建立目录
    [HKEY_CLASSES_ROOT\ACME.1\shell\open\command] //command下写入数据(@=后面的是数据)
    @="D:\ACME\win32_vc2008_desktop\LogMonitor.exe 11.111.11.11 8888 -C"

    写入注册表之后,直接利用

    html页面中:
    <a href = "ACME.1:\"></a>
    js中:
    window.location.href = "ACME.1:\\"

     

    展开全文
  • 浏览器启动客户端程序

    千次阅读 2012-07-30 17:33:17
     现在有很多B/S与C/S相结合的产品,会出现一种需求:从浏览器启动客户端的程序,并且如果客户端未安装相应程序,先提示安装。  主流的几款产品:腾讯QQ、阿里旺旺、迅雷、PPLive等,都有实现了类似的功能。  ...

    • 综述
            现在有很多B/S与C/S相结合的产品,会出现一种需求:从浏览器启动客户端的程序,并且如果客户端未安装相应程序,先提示安装。
            主流的几款产品:腾讯QQ、阿里旺旺、迅雷、PPLive等,都有实现了类似的功能。
            浏览器启动客户端程序可以通过注册自定义的Url协议来实现,而检测客户端是否安装程序需要利用ActiveX控件。
            要额外注意的是,现在只有IE浏览器才支持。
       
    • 客户端程序
          先准备一个简单的客户端程序,只用来显示传入的命令行参数。
       
      Client
      复制代码
      1 namespace wuhong.Client
      2 {
      3 class Program
      4 {
      5 static void Main(string[] args)
      6 {
      7 if (args != null && args.Length > 0)
      8 {
      9 Array.ForEach(args, arg => Console.WriteLine(arg));
      10 }
      11
      12 Console.ReadLine();
      13 }
      14 }
      15 }
      复制代码
          
    • 从浏览器启动
            注册自定义的Url协议,这样当用户点击这个URL协议的链接后,IE就会启动相关URL协议的处理器,使用注册的程序来处理这个协议。
            具体来说,比如现在需要注册“wuhong.client”的Url协议,使得形如“wuhong.client:XXXXYYYY”的链接都由上节的控制台程序来处理。
            这一切只需要在客户端安装控制台程序的同时向注册表添加下面的项就可以实现:
       
      注册表
      复制代码
      1 [HKEY_CLASSES_ROOT\wuhong.client]
      2
      3 @="wuhong.Client"
      4
      5  "URL Protocol"=""
      6
      7 [HKEY_CLASSES_ROOT\wuhong.client\DefaultIcon]
      8
      9 @=" wuhong.Client.exe "
      10
      11 [HKEY_CLASSES_ROOT\wuhong.client\Shell]
      12
      13 [HKEY_CLASSES_ROOT\wuhong.client\Shell\open]
      14
      15 [HKEY_CLASSES_ROOT\wuhong.client\Shell\open\command]
      16
      17 @="\"[TARGETDIR]wuhong.Client.exe\" \"%1\""
      复制代码
       
            解释一下其中几项:
      [HKEY_CLASSES_ROOT\wuhong.client]
            默认项和URL Protocol项的值都是设置一个名称。
      [HKEY_CLASSES_ROOT\wuhong.client\DefaultIcon]
            默认项的值是Url协议的图标文件名的路径。简单处理可以省略这一项。
      [HKEY_CLASSES_ROOT\wuhong.client\Shell\open\command]
            默认项的值是用来调用(或者启动)处理这个Url协议的程序。整个Url会作为一个参数传递给处理程序。
       
    • 检测客户端程序安装
            检测客户端是否安装了上节的控制台程序,需要另外实现一个ActiveX控件,在客户端安装程序的同时一并安装。这样可以利用ActiveX控件的加载情况,来判断控制台程序是否安装。
            作为示例,这里实现一个没有任何其他功能的ActiveX控件。
            首先定义IobjectSafety接口。IobjectSafety接口用来向IE声明自身是脚本安全的。在IE的中级安全级别上,是允许脚本安全的ActiveX控件的创建而不提示警告。
       
      IobjectSafety接口
      复制代码
      1 namespace wuhong.ActiveX
      2 {
      3 [ComImport, Guid("CB5BDC81-93C1-11CF-8F20-00805F2CD064")]
      4 [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
      5 public interface IObjectSafety
      6 {
      7 [PreserveSig]
      8 int GetInterfaceSafetyOptions(ref Guid riid, [MarshalAs(UnmanagedType.U4)] ref int pdwSupportedOptions, [MarshalAs(UnmanagedType.U4)] ref int pdwEnabledOptions);
      9
      10 [PreserveSig()]
      11 int SetInterfaceSafetyOptions(ref Guid riid, [MarshalAs(UnmanagedType.U4)] int dwOptionSetMask, [MarshalAs(UnmanagedType.U4)] int dwEnabledOptions);
      12 }
      13 }
      复制代码
        
            接下来是控件的代码,实现一个“wuhong.client”的控件,本身不添加任何额外的功能。
       
      UserControl类
      复制代码
      1 namespace wuhong.ActiveX
      2 {
      3 [Guid("9C9701D1-D188-495d-8721-9D246211A27C"), ProgId("wuhong.client"), ComVisible(true)]
      4 public partial class ActiveXObject : UserControl, IObjectSafety
      5 {
      6 public ActiveXObject()
      7 {
      8 InitializeComponent();
      9 }
      10
      11 private const int INTERFACESAFE_FOR_UNTRUSTED_CALLER = 0x00000001;
      12 private const int INTERFACESAFE_FOR_UNTRUSTED_DATA = 0x00000002;
      13 private const int S_OK = 0;
      14
      15 public int GetInterfaceSafetyOptions(ref Guid riid, ref int pdwSupportedOptions, ref int pdwEnabledOptions)
      16 {
      17 pdwSupportedOptions = INTERFACESAFE_FOR_UNTRUSTED_CALLER;
      18 pdwEnabledOptions = INTERFACESAFE_FOR_UNTRUSTED_DATA;
      19
      20 return S_OK;
      21 }
      22
      23 public int SetInterfaceSafetyOptions(ref Guid riid, int dwOptionSetMask, int dwEnabledOptions)
      24 {
      25 return S_OK;
      26 }
      27 }
      28 }
      复制代码
       
             另外AssemblyInfo.cs中需要修改并添加以下内容:
       
      AssemblyInfo.cs
      1 using System.Security;
      2 [assembly: AllowPartiallyTrustedCallers()]
      3 [assembly: ComVisible(true)]
             项目生成中也需要选择“为COM互操作注册”。
       
    • 测试
            将客户端程序、ActiveX控件以及注册Url协议的注册表项制作成安装包。
            使用下面的页面代码测试:
       
      Test页面
      复制代码
      1 <html xmlns="http://www.w3.org/1999/xhtml" >
      2  <head>
      3 <script type='text/javascript'>
      4 function Start() {
      5 try {//支持
      6   var obj = new ActiveXObject("wuhong.client");
      7 }
      8 catch (e) {//不支持
      9   }
      10 if(null != obj){
      11 delete obj;
      12 window.navigate('wuhong.client:start?HelloWorld');
      13 }
      14 else{
      15 alert("您未安装程序,请安装!");
      16 }
      17 }
      18 </script>
      19 <title></title>
      20  </head>
      21  <body>
      22 <input type="button" onclick="Start()" value="启动"/>
      23  </body>
      24  </html>
      复制代码
       
            可以看到安装前后点击“启动”按钮的区别。
            安装前:
       
            安装后:
       
       

    展开全文
  • 浏览器打开本地cs应用,传输登录信息。 2.方案  最简单的,可直接通过注册表协议的方式。直接bs打开cs。(以下程序涵盖此种)  可是,boss要求我方系统不直接与oa系统进行“接触”,需要做一个中间件。即:...

    1.背景

      给甲方爸爸做的项目,入口需要集成至oa系统上去。即浏览器端打开本地cs应用,传输登录信息。

    2.方案

      最简单的,可直接通过注册表协议的方式。直接bs打开cs。(以下程序涵盖此种)

      可是,boss要求我方系统不直接与oa系统进行“接触”,需要做一个中间件。即:bs调用中间程序,中间程序解析后给至客户端。

    3.程序

    (1)加密解密程序不再赘述。(对称加密,非对称加密)

    (2)程序写入打开cs的注册表(可手动加入)

            public void WriteToRegedit(string exePath)
            {
                //注册的协议头,即在地址栏中的路径 如QQ的:tencent://path/**.exe 在浏览器地址栏中输入:tencent:// 就能打开本程序
                var surekamKey = Microsoft.Win32.Registry.ClassesRoot.CreateSubKey("BISTurboInterface");
    
                //以下这些参数都是固定的,不需要更改
                var shellKey = surekamKey.CreateSubKey("shell");
                var openKey = shellKey.CreateSubKey("open");
                var commandKey = openKey.CreateSubKey("command");
                surekamKey.SetValue("URL Protocol", "");
    
                //exePath  cs程序的路径信息
                commandKey.SetValue("", "\"" + exePath + "\"" + " \"%1\"");
            }

    (3)查看是否已经有cs程序在运行。若有,kill进程,再重新打开该程序

                    Process[] processes = Process.GetProcessesByName("AppName");
                    if (processes.Count() > 0)
                    {
                        foreach (var item in processes)
                        {
                            item.Kill();
                        }
                    }
                    Process pr = new Process();//声明一个进程类对象
                    pr.StartInfo.FileName = path;
                    pr.Start();
                    

    (4)带参数的解析以及打开

                        //input参数为该中间件exe程序入口传入的string[]类型参数                    
                        string canshu = DESEncrypt.Decrypt(input[0].Split('/')[2]);
                        string username = canshu.Split('&')[0];
                        //调用程序
                        Process pr = new Process();//声明一个进程类对象
                        pr.StartInfo.FileName = path;
                        //pr.StartInfo.FileName = @"F:\WorkSpaces\TestCode\test\test\bin\Release\test.exe";
                        //该出为自定义的规则,可删掉“++”
                        pr.StartInfo.Arguments = "++"+username;
                        pr.Start();

    这样就完成了整个过程。bs传输协议头以及加密字符串至中间件exe,程序解析参数后,根据一定规则判断做出动作(若无注册就注册,若已经注册并且程序运行就kill进程重开,若注册并无程序运行就打开协议对应的地址启动cs)

    展开全文
  • 又试了下其他项目SVN地址,SVN客户端可以访问。 解决:清除SVN客户端的认证数据,只需要清除不能访问的SVN地址就可以了。 参考链接:http://blog.csdn.net/skygpan/article/details/45535545
  • 打开只能在微信客户端打开的链接

    万次阅读 2016-08-22 15:43:03
    但在打开之前的历史文章时候,发现到浏览器打开链接的时候,都提示必须要在微信客户端才能打开。 解决方法是: 1、在微信中打开你选中的页面; 2、点击页面的右上角的三个竖排的白点符号,选择其中的“复制...
  • “请在微信客户端打开链接”解决方案

    万次阅读 热门讨论 2019-04-26 11:43:19
    当我们将微信页面地址复制到电脑自带的浏览器打开时候就会提示“请在微信客户端打开链接”如图所示: 百度上很多都是告诉我们用什么抓包工具破解什么的,结果呢没 luan用!这给我们开发人员调试带来了诸多...
  • 判断是否为微信浏览器或支付宝浏览器if (/MicroMessenger/.test(window.navigator.userAgent)) { alert('微信客户端'); } else if (/AlipayClient/.test(window.navigator.userAgent)) { alert('支付宝客户端')...
  • SVN客户端浏览器端访问都需要输入地址,但是客户端访问不成功,浏览器端却可以。又换了其它SVN服务器地址访问,发现客户端能够访问成功。 解决:清除SVN客户端的认证数据,只要清除不能访问的SVN地址即可。 ...
  • 当微信开发中遇到用微信web工具可以打开网页,但是用微信客户端就打不开的时候,可以清空微信客户端浏览器缓存,然后再测试,应该就可以打开了。微信浏览器缓存清理方法:1、随便打开一个聊天窗口,输入debugx5.qq...
  • 有些链接,是需要在微信客户端内才能打开的,那么想在 PC 端的浏览器打开,怎么办呢? UA 不明白的话先不用管,继续往下看。 【安卓QQ内置浏览器UA】 Mozilla/5.0 (Linux; Android 5.0; SM-N9100 Build/LRX21V) ...
  • 如题,突然小乌龟就不能用了,不管是检出还是提交...但是都不行,突然就这样了,试了一下,浏览器可以正常打开svn目录,求教大神救命~~ ![图片说明](https://img-ask.csdn.net/upload/201503/03/1425367809_52542.png)
  • 打开chrome浏览器-》F12-&gt;点击菜单栏-&gt;Settings-&gt;Devices-&gt;Add custom device-&gt; device name 随便填写 User agent sring : mozilla/5.0 (iphone; cpu iphone os 6_1_3 like ...
  • 1、在google chrome里输入:chrome://flags/#enable-npapi 2、对NPAPI 启用 3、重新浏览器
  • 这个提示原因是当前手机浏览器不能识别带有微信字段的链接,解决办法就是给它添加微信浏览器的识别 首先获取UA webview.getSettings().getUserAgentString(); 获取之后在行进行添加 webview.getSettings()....
  • 1. 点击扩展,然后搜索框... 2. 下载下面的脚本到本机,然后右击选择记事本打开。 ... 3....之后打开浏览器,单击油猴图标选择添加新脚本 4. 将原有脚本全部删除。粘贴上刚刚复制的脚本,并点击保存按钮 5. 将其启用 随后
  • SVN客户端 浏览器无法访问

    千次阅读 2019-02-26 14:51:59
    这两天SVN客户端不知道什么原因突然无法访问了,浏览器客户端都无法访问,客户端提示连接超时: Unable to connect to a repository at URL 'https://svn.xxxxxxxxxx' Connection timed out 于是网络搜索...
  • 客户端输入网址,请求与服务器的80端口建立连接。 服务器收到请求,并响应客户端客户端接收到服务器的响应,准备开始接收数据。服务器开始发送数据。 (三次握手) 第1次握手:客户端通过将一个含有“同步...
  • 浏览器可以访问: ![图片说明](https://img-ask.csdn.net/upload/201602/21/1455986598_330688.png) TorToise客户端上无法连接: ![图片说明](https://img-ask.csdn.net/upload/201602/21/1455986648_791547.png) ...
  • /** * 判读是否是微信客户端 * @return true - ... false - 其他浏览器打开页面 */ function is_wechat_client(){ var ua = navigator.userAgent.toLowerCase(); if(ua.match(/MicroMessenger/i)=="micromesse
1 2 3 4 5 ... 20
收藏数 274,501
精华内容 109,800
关键字:

浏览器打开客户端