【问题标题】: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 处理程序。
- 注意:有一个激活事件
onUri 在即将处理指向当前扩展的 uri 时触发。
用法很简单:
vscode.window.registerUriHandler({
handleUri(uri:vscode.Uri) {
// do something with the URI
}
});