private static VSITEMSELECTION[] GetSelectedItems()
{
var selectedItems = new List<VSITEMSELECTION>();
var hierarchy = IntPtr.Zero;
var selectionContainer = IntPtr.Zero;
try
{
uint itemId;
IVsMultiItemSelect multiSelect;
var selectionMonitor = Package.GetGlobalService(typeof(IVsMonitorSelection)) as IVsMonitorSelection;
ErrorHandler.ThrowOnFailure(selectionMonitor.GetCurrentSelection(out hierarchy, out itemId, out multiSelect, out selectionContainer));
if (SingleItemSelected(itemId))
{
selectedItems.Add(GetSelectedItem(hierarchy, itemId));
}
else if (multiSelect != null)
{
selectedItems.AddRange(GetSelectedItems(multiSelect));
}
}
finally
{
ReleasePtr(hierarchy);
ReleasePtr(selectionContainer);
}
return selectedItems.ToArray();
}