SContainerDispatch 接口

传递给 QueryService 方法返回对 IDispatch Interface

命名空间:  Microsoft.VisualStudio.OLE.Interop
程序集:  Microsoft.VisualStudio.Shell.Interop.8.0(在 Microsoft.VisualStudio.Shell.Interop.8.0.dll 中)

语法

声明
<GuidAttribute("B722BE00-4E68-101B-A2BC-00AA00404770")> _
Public Interface SContainerDispatch
[GuidAttribute("B722BE00-4E68-101B-A2BC-00AA00404770")]
public interface SContainerDispatch

备注

IDispatch Interface 在支持自动化的任何控件或 VSPackage 中实现。 但是,获取 IDispatch 接口,查询控件或 VSPackage 服务提供程序的和要求该服务提供程序中获取 IDispatch 接口从 SContainerDispatch 服务是必需的。 为如何参见此示例可以完成的。

示例

此示例演示如何从 SContainerDispatch 服务的 IDispatch Interface

IDispatch GetDispatchInterface(object pUnknown)
{
    IDispatch pDispatchInterface = null;
    if (null != pUnknown)
    {
        Microsoft.VisualStudio.OLE.Interop.IServiceProvider pServiceProvider;
        pServiceProvider = pUnknown as Microsoft.VisualStudio.OLE.Interop.IServiceProvider;
        if (null != pServiceProvider)
        {
            Guid   serviceGuid   = typeof(SContainerDispatch).GUID;
            Guid   interfaceGuid = typeof(IDispatch).GUID;
            IntPtr pInterface    = IntPtr.Zero;
            int hr = pServiceProvider.QueryService(ref serviceGuid,
                                                   ref interfaceGuid,
                                                   out pInterface);
            if (Microsoft.VisualStudio.ErrorHandler.Succeeded(hr))
            {
                 pDispatchInterface = Marshal.GetObjectForIUnknown(pInterface)
                                      as IDispatch;
            }
        }
    }
    return pDispatchInterface;
}

请参见

参考

Microsoft.VisualStudio.OLE.Interop 命名空间