public static IVsCodeWindow GetCodeWindow(this IVsTextView text_view) { Contract.Requires <ArgumentNullException>(text_view != null, "textView"); IObjectWithSite object_with_site = text_view as IObjectWithSite; if (object_with_site == null) { return(null); } Guid riid = typeof(IOleServiceProvider).GUID; IntPtr ppvSite; object_with_site.GetSite(ref riid, out ppvSite); if (ppvSite == IntPtr.Zero) { return(null); } IOleServiceProvider ole_service_provider = null; try { ole_service_provider = Marshal.GetObjectForIUnknown(ppvSite) as IOleServiceProvider; } finally { Marshal.Release(ppvSite); } if (ole_service_provider == null) { return(null); } Guid guid_service = typeof(SVsWindowFrame).GUID; riid = typeof(IVsWindowFrame).GUID; IntPtr ppvObject; if (ErrorHandler.Failed(ole_service_provider.QueryService(ref guid_service, ref riid, out ppvObject)) || ppvObject == IntPtr.Zero) { return(null); } IVsWindowFrame frame = null; try { frame = Marshal.GetObjectForIUnknown(ppvObject) as IVsWindowFrame; } finally { Marshal.Release(ppvObject); } riid = typeof(IVsCodeWindow).GUID; if (ErrorHandler.Failed(frame.QueryViewInterface(ref riid, out ppvObject)) || ppvObject == IntPtr.Zero) { return(null); } IVsCodeWindow code_window = null; try { code_window = Marshal.GetObjectForIUnknown(ppvObject) as IVsCodeWindow; return(code_window); } finally { Marshal.Release(ppvObject); } }
public static IVsCodeWindow GetCodeWindow([NotNull] this IVsTextView textView) { Requires.NotNull(textView, nameof(textView)); IObjectWithSite objectWithSite = textView as IObjectWithSite; if (objectWithSite == null) { return(null); } Guid riid = typeof(IOleServiceProvider).GUID; IntPtr ppvSite; objectWithSite.GetSite(ref riid, out ppvSite); if (ppvSite == IntPtr.Zero) { return(null); } IOleServiceProvider oleServiceProvider = null; try { oleServiceProvider = Marshal.GetObjectForIUnknown(ppvSite) as IOleServiceProvider; } finally { Marshal.Release(ppvSite); } if (oleServiceProvider == null) { return(null); } Guid guidService = typeof(SVsWindowFrame).GUID; riid = typeof(IVsWindowFrame).GUID; IntPtr ppvObject; if (ErrorHandler.Failed(oleServiceProvider.QueryService(ref guidService, ref riid, out ppvObject)) || ppvObject == IntPtr.Zero) { return(null); } IVsWindowFrame frame = null; try { frame = Marshal.GetObjectForIUnknown(ppvObject) as IVsWindowFrame; } finally { Marshal.Release(ppvObject); } riid = typeof(IVsCodeWindow).GUID; if (ErrorHandler.Failed(frame.QueryViewInterface(ref riid, out ppvObject)) || ppvObject == IntPtr.Zero) { return(null); } IVsCodeWindow codeWindow = null; try { codeWindow = Marshal.GetObjectForIUnknown(ppvObject) as IVsCodeWindow; return(codeWindow); } finally { Marshal.Release(ppvObject); } }