Могут ли расширения VS Code получать запросы URI от других программ?

#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
    }
});