标签: protocol-handler

办公室协议处理程序

Microsoft Office 注册了多个协议处理程序,例如ms-word,等等。此处ms-excel提供了有限的文档。我正在尝试使用 Excel 协议处理程序打开一个文档,向其传递文件 uri,但运气不佳。我可以毫无问题地使用 http/https uri 进行操作,但在我的情况下,文档驻留在网络文件共享上。

如果文档位于 Web 服务器上,则此方法有效:
ms-excel:ofv|u|http://someserver/somefolder/document.xlsx

这不起作用:
ms-excel:ofv|u|file://someserver/somefolder/document.xlsx

我收到以下错误:

无法执行该操作,因为 Office 无法识别为其提供的命令。

有没有办法让这些协议处理程序与文件 URI 一起工作?

windows uri protocols ms-office protocol-handler

8
推荐指数
1
解决办法
3684
查看次数

使用github时无法找到"Visual Studio Web请求处理程序"的解决方法?

当我在github上选择"在Visual Studio中打开"时,我收到以下错误:

"无法找到Visual Studio Web请求处理程序"

我相信这是由于git-client协议处理程序未正确注册.

这里列出了VS2015的封闭错误,但没有解决方法:https://github.com/github/VisualStudio/issues/140

我试图修复Visual Studio 2017,但没有解决它.是否有解决方法,可能是通过编辑HKEY_CLASSES_ROOT\git-client条目?

github protocol-handler visual-studio-2017

8
推荐指数
1
解决办法
2731
查看次数

Android WebView协议处理程序

我正在尝试使用WebView开发Android浏览器应用程序,使用户能够从自定义协议访问内容.自定义协议可能是foob​​ar://

我想拦截对此自定义协议的所有请求.这意味着:

  1. GET请求
  2. POST请求

我需要能够将这些操作的结果交还给WebView.

可以使用shouldInterceptRequest(可从API级别11获得)处理GET请求.

现在我的问题是:我如何能够接受和处理POST请求

这里这里已经提出几乎相同的问题,但是没有找到他们的问题的解决方案.

android url-interception protocol-handler android-webview webviewclient

7
推荐指数
1
解决办法
2584
查看次数

在github上打开时如何更改Visual Studio的版本

我有 VS2015 和 VS2017。当我在 GitHub 上选择“在 Visual Studio 中打开”时,我想将其更改为使用 VS2017 而不是 VS2015。

我怎样才能做到这一点?

github protocol-handler visual-studio-2017 visual-studio-2019

7
推荐指数
2
解决办法
2224
查看次数

协议处理程序

要求:我们希望通过按钮或链接从网页启动外部比较工具(如 BeyondCompare 或 WinMerge)。文本文件路径应在启动时传递给该工具,以便它理解它们并在左侧和右侧比较面板中打开它们。

尝试过的解决方案

1) 使用JavaScript 的 ActiveXObject:用户可以简单地单击按钮/链接并启动安装在其机器上的比较工具。但它只适用于 Internet Explorer,所以我们不能这样做。

参考:如何使用超链接运行外部程序,例如记事本?

2) 使用Java Applet:出于安全原因,嵌入在浏览器中的Applet 不允许访问本地文件系统,并且会抛出“访问控制异常”。因此,我们也不能这样做。

Ref:为什么我的小程序会抛出 AccessControlException?

3) 使用协议处理程序:我们可以设置自定义的 URL 协议来触发程序。就像我们使用 mailto:user@email.com 语法创建电子邮件链接一样,这将自动启动 Windows 上的 Outlook。“mailto”是 Windows 注册表中的预定义协议。

同样,我们创建了自己的协议,在注册表中说“launchCompareTool”,并且能够启动任何应用程序,如 WinMerge 或 BeyondCompare。但是,我们无法实现将左侧和右侧文件路径作为参数传递给应用程序。可能是启动的应用程序需要期待这些参数。

参考:http : //www.dreamincode.net/forums/topic/220444-run-program-from-server-on-client-computer/ http://msdn.microsoft.com/en-us/library/aa767914% 28v=vs.85%29.aspx#app_reg

与“mailto”协议不同,“mailto”协议将“body”和“subject”参数传递给理解它们的邮件客户端(如 Outlook)。这些比较工具没有可以从协议传递的参数。

还有其他方法可以满足这个要求吗?

谢谢,阿卜杜勒

launching-application protocol-handler

6
推荐指数
1
解决办法
8283
查看次数

具有多个参数的协议处理程序

我创建了一个应用程序来充当协议处理程序,注册表是根据http://msdn.microsoft.com/en-us/library/ie/aa767914(v=vs.85).aspx设置的

然后在网页中我有类似的内容:

<a href="testapp:arg1">Test App</a>
Run Code Online (Sandbox Code Playgroud)

如果我单击该链接,应用程序将启动,并且“testapp:arg1”将作为参数传入。

现在我想将多个参数传递给处理程序。我猜在“命令”注册表项中,我会有"path_to_exe" "%1" "%2". 但是我不知道如何编写 html 链接来提供多个参数。

是否可以传递多个参数?如果是这样,我该怎么做?不同浏览器之间有区别吗?

html c++ browser url protocol-handler

6
推荐指数
1
解决办法
5915
查看次数

自定义协议处理程序Linux,Centos 7 for chrome

我开发了一个应用程序,可以通过我的网站点击按钮来调用.我正在使用NPAPI来完成这项任务.不过最近谷歌已经弃用了NPAPI,所以我使用自定义协议处理程序来调用我的应用程序"myapp://"

在Windows上我的应用程序和处理程序工作得很好.

现在我想在Linux中做同样的事情.我需要为CentOS优先7和Chrome网络浏览器这样做.

我做了一些研究,但网上的大多数帮助都是针对firefox的,但我特别需要它用于chrome.我的桌面是基于GNOME的,请帮助.

linux google-chrome npapi protocol-handler

6
推荐指数
1
解决办法
2512
查看次数

以编程方式检索支持给定文件类型的已安装应用程序列表

虽然很明显我们无法在iOS上检索已安装的应用程序列表,但是有什么技巧可以让我们确定为给定文件类型注册的应用程序列表吗?也就是说,用户将在Open In ...菜单中看到该特定文件类型的列表.canOpenURL只返回一个布尔值,但理想情况下它会返回一个受支持的已安装应用程序列表.有任何想法吗?

iphone protocol-handler ipad ios uidocumentinteraction

5
推荐指数
2
解决办法
2587
查看次数

chrome 25 iframe自定义协议不做

我有协议(如http)与在Android注册的第三方应用程序管理的方案.即,某些应用://某种行为或类似的东西.

在将chrome升级到最新版本(chrome 25)之前,它工作正常,但升级后,它不起作用.

我只是使用iframe来尝试加载已注册的应用程序.这是我的代码快照.

<iframe src="about:blank" id="myframe"/>
<script>
  function changesrc(){
    document.getElementById("myframe").src="someapp://someaction"
  }
</script> 
Run Code Online (Sandbox Code Playgroud)

对这个问题的任何想法?

iframe android google-chrome protocol-handler

5
推荐指数
1
解决办法
1555
查看次数

如何在Windows中的自定义协议处理程序中转义和号

我在此链接之后创建了一个自定义协议处理程序。情况是我需要打开一个链接,该链接只能在IE中打开,并且可能包含多个查询参数,应该从运行在Chrome上的Web应用程序在IE中打开该链接(这确实很烦人)。经过多次尝试和失败之后,我设法找到了将代码段添加到Windows注册表配置单元中的代码片段,并制作了.reg文件并运行:

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Classes\ie]
"URL Protocol"="\"\""
@="\"URL:IE Protocol\""
[HKEY_CURRENT_USER\Software\Classes\ie\DefaultIcon]
@="\"explorer.exe,1\""
[HKEY_CURRENT_USER\Software\Classes\ie\shell]
[HKEY_CURRENT_USER\Software\Classes\ie\shell\open]
[HKEY_CURRENT_USER\Software\Classes\ie\shell\open\command]
@="cmd /k set myvar=%1 & call set myvar=%%myvar:ie:=%% & call \"C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe\" %%myvar%% & exit /B"
Run Code Online (Sandbox Code Playgroud)

它起作用了,但问题是,如果链接包含多个查询参数,则除第一个以外的所有查询参数都将被省略,我确信这是因为Windows命令行中的字符编码:

e.g. some_example_url?query1=value1&query2=value2&query3=value3 is becoming some_example_url?query1=value1
Run Code Online (Sandbox Code Playgroud)

我找到了这个解决方案,但它也不起作用。如何正确转义&字符,以便可以在IE中使用所有查询参数打开字符。(如前所述,链接是由运行在Chrome上的网络应用触发的)

编辑:触发​​以下代码:

fileClicked(url) {
  // url should be escaped with ^
  const escapedUrl = url.replace(/&/gi, '^&');
  const ie = document.createElement('a');
  // ie: scheme => custom protocol handler …
Run Code Online (Sandbox Code Playgroud)

windows internet-explorer command-line google-chrome protocol-handler

5
推荐指数
1
解决办法
122
查看次数