#visual-studio-code #vscode-extensions
#visual-studio-code #vscode-extensions
Вопрос:
Я нашел информацию в официальных документах, которые onUri
можно использовать в качестве события активации. Итак, мое расширение можно активировать, скажем, из программы WPF, написанной на C #, вызвав URI, такой как vscode://myextension/arg1=fooamp;arg2=bar
. Но нигде не сказано, как я могу получить аргументы, которые были переданы с запросом URI. Или даже просто получить исходную строку этого.
Мой вопрос в том, можно ли это сделать, и если нет, есть ли какой-либо другой способ заставить расширение VS Code взаимодействовать с другой программой?
Ответ №1:
Да, вы можете использовать vscode.window.registerUriHandler()
для этого:
Регистрирует обработчик uri, способный обрабатывать общесистемные uri. В случае, если открыто несколько окон, самое верхнее окно будет обрабатывать uri. Область действия обработчика uri ограничена расширением, из которого он предоставлен; он сможет обрабатывать только uri, которые направлены на само расширение. URI должен соответствовать следующим правилам:
Uri-scheme должна быть названием продукта;
Полномочием uri должен быть идентификатор расширения (например.
my.extension
);- Части uri-path, -query и -fragment являются произвольными. Например, если
my.extension
расширение зарегистрирует обработчик uri, ему будет разрешено обрабатывать URI только с префиксомproduct-name://my.extension
.Расширение может зарегистрировать только один обработчик uri за все время своей активации.
- Примечание: Существует событие активации
onUri
, которое срабатывает, когда uri, направленный для текущего расширения, собирается быть обработанным.
Использование довольно простое:
vscode.window.registerUriHandler({
handleUri(uri:vscode.Uri) {
// do something with the URI
}
});