VS Code扩展可以从其他程序获取URI请求吗?

时间:2019-03-30 18:37:04

标签: visual-studio-code vscode-extensions

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

我的问题是,可以做到吗?如果不能,是否还有其他方法可以使VS Code扩展与另一个程序进行交互?

1 个答案:

答案 0 :(得分:2)

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

  

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

     
      
  • uri方案必须为产品名称;

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

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

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

     
      
  • 注意:当即将处理针对当前扩展名的uri时,会触发一个激活事件onUri
  •   

用法非常简单:

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