Получить выбранные элементы в решении с нативными интерфейсами - PullRequest
0 голосов
/ 30 января 2020

Я пытаюсь получить все выбранные элементы в решении и это с нативным кодом. С нативным кодом я имею в виду код, который не использует DTE.

. Я проверил документацию и попытался найти подходящее решение, однако я не зашел слишком далеко. То, что я нашел, было IVsUiHierarchy, которое содержит метод ExecCommand, который содержит следующее.

Команды, которые действуют на конкретный c элемент в иерархии. (Если ItemID равен VSITEMID_SELECTION, команда применяется к выбранному элементу или элементам.)

Поэтому я подозреваю, что метод, о котором они говорят, это упомянутый выше ExecCommand. С одной стороны, я не совсем уверен, как добраться до объекта IVsHierarchy из IVsHierarchy или аналогичного, с другой стороны, я не совсем уверен, как правильно использовать метод ExecCommand. Кроме того, я даже не совсем уверен, является ли это «правильным» подходом к этому.

Примечание. Я ищу решение, которое не содержит следующий код в этом ответе .

1 Ответ

1 голос
/ 30 января 2020

Вы можете использовать IVsMonitorSelection.GetCurrentSelection , чтобы идентифицировать все выбранные элементы в обозревателе решений.

Выше приведен интерфейс IVsMultItemSelect, который можно использовать для вызова IVsMultiItemSelect.GetSelectedItems для извлечения массива значений VSITEMSELECTION.

Есть несколько расширенных выборок , которые используют GetSelectedItems, которые можно использовать в качестве ссылки.

С уважением, Эд Дор

...