【问题标题】:Can VS Code extensions get URI requests from other programs?VS Code 扩展可以从其他程序获取 URI 请求吗?
【发布时间】:2019-08-21 09:44:03
【问题描述】:

我在官方文档中找到了onUri 可以用作激活事件的信息。因此,我的扩展可以通过调用诸如vscode://myextension/arg1=foo&arg2=bar 之类的 URI 从用 C# 编写的 WPF 程序中激活。但它没有说明我如何获取通过 URI 请求传递的参数。或者甚至只是获取它的原始字符串。

我的问题是,可以做到吗?如果没有,有没有其他方法可以让 VS Code 扩展与另一个程序交互?

【问题讨论】:

    标签: visual-studio-code vscode-extensions


    【解决方案1】:

    是的,您可以为此使用vscode.window.registerUriHandler()

    注册一个uri handler 能够处理系统范围的uris。如果有多个窗口打开,最上面的窗口将处理 uri。 uri 处理程序的范围仅限于它所贡献的扩展;它只能处理指向扩展本身的uri。 uri 必须遵守以下规则:

    • uri-scheme 必须是产品名称;

    • uri-authority 必须是扩展 id(例如my.extension);

    • uri-path、-query 和 -fragment 部分是任意的。 例如,如果 my.extension 扩展注册了一个 uri 处理程序,它将只允许处理前缀为 product-name://my.extension 的 uri。

    扩展在其整个激活生命周期内只能注册一个 uri 处理程序。

    • 注意:有一个激活事件 onUri 在即将处理指向当前扩展的 uri 时触发。

    用法很简单:

    vscode.window.registerUriHandler({
        handleUri(uri:vscode.Uri) {
            // do something with the URI
        }
    });
    

    【讨论】:

      猜你喜欢
      • 2018-10-06
      • 2016-09-17
      • 2020-12-31
      • 2017-01-26
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多