如何让VS服务器资源管理器窗口DDEX的选择连接节点对象(how to get the select

2019-08-17 19:54发布

我添加了在服务器资源管理器的连接节点为我的VS扩展一些选项。 对于我所添加的菜单选项之一,我需要获得非常所选连接的连接字符串,所以我已经在BeforeQueryStatus事件,并在命令处理程序方法添加一些代码尝试这样做。 不过貌似我错过了,因为我想获得DataViewHierarchyAccessor的实例,我总是得到一个空值,每一次的东西。 虽然如果我做同样的事情,但在一个较低的水平节点工作正常。 我已经使用,没有运气以下代码:

IVsDataExplorerNodeSelection nodeSelection =(IVsDataExplorerNodeSelection)Package.GetGlobalService(typeof运算(IVsDataExplorerNodeSelection));

IVsUIHierarchy层次= Marshal.GetTypedObjectForIUnknown(hierarchyPtr的typeof(IVsUIHierarchy))作为IVsUIHierarchy;

有没有人做了服务器资源管理器窗口的连接节点类似的东西?

更新:

貌似我得到了这方面的一些进步,我只是尝试这样做:

EnvDTE80.DTE2 _applicationObject = GetDTE2();
UIHierarchy uih = _applicationObject.ToolWindows.GetToolWindow("Server Explorer") as UIHierarchy;
Array selectedItems = (Array)uih.SelectedItems;
if (null != selectedItems)
    {
        foreach (UIHierarchyItem selItem in selectedItems)
        {
            SelectedItem prjItem = selItem.Object as EnvDTE.SelectedItem;
            string name = prjItem.Name;
        }
    }

现在我的问题是,如果有更好的型投selectedItems的名单? 而不是EnvDTE.SelectedItem。

提前致谢。

Answer 1:

标记我的问题,因为我贴的伎俩代码为应答。

EnvDTE80.DTE2 _applicationObject = GetDTE2();
UIHierarchy uih = _applicationObject.ToolWindows.GetToolWindow("Server Explorer") as UIHierarchy;
Array selectedItems = (Array)uih.SelectedItems;
if (null != selectedItems)
{
    foreach (UIHierarchyItem selItem in selectedItems)
    {
        SelectedItem prjItem = selItem.Object as EnvDTE.SelectedItem;
        string name = prjItem.Name;
    }
}


文章来源: how to get the selected connection node object of VS Server Explorer window DDEX