我在官方文档中发现onUri
可以用作激活事件。因此,可以通过调用诸如vscode://myextension/arg1=foo&arg2=bar
之类的URI,从用C#编写的WPF程序中激活我的扩展名。但是没有任何地方说我如何获得随URI请求传递的参数。甚至只是获取原始字符串。
我的问题是,可以做到吗?如果不能,是否还有其他方法可以使VS Code扩展与另一个程序进行交互?
答案 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
}
});