private Mock <IVsWindowFrame> CreateMockFrame(__WindowFrameTypeFlags frameType, bool canQueryFrameType = true)
        {
            var frame = new Mock <IVsWindowFrame>();
            var type  = (object)(int)frameType;
            var queryFrameTypeResult = canQueryFrameType ? VSConstants.S_OK : VSConstants.E_FAIL;

            frame
            .Setup(x => x.GetProperty((int)__VSFPROPID.VSFPROPID_Type, out type))
            .Returns(queryFrameTypeResult);

            return(frame);
        }
Пример #2
0
        public static IEnumerable<IVsWindowFrame> EnumerateWindows(this IVsUIShell4 shell, __WindowFrameTypeFlags flags, Guid? windowGuid = null) {
            IEnumWindowFrames enumerator;
            ErrorHandler.ThrowOnFailure(shell.GetWindowEnum((uint)flags, out enumerator));

            var frames = new IVsWindowFrame[1];
            uint fetched = 0;
            while (VSConstants.S_OK == enumerator.Next(1, frames, out fetched) && fetched > 0) {
                var frame = frames[0];

                bool include = true;
                if (windowGuid.HasValue) {
                    Guid persist;
                    ErrorHandler.ThrowOnFailure(frame.GetGuidProperty((int)__VSFPROPID.VSFPROPID_GuidPersistenceSlot, out persist));
                    include = persist == windowGuid;
                }

                if (include) {
                    yield return frame;
                }
            }
        }
Пример #3
0
        public static Result <List <IVsWindowFrame> > GetDocumentWindowFrames(this IVsUIShell4 vsShell, __WindowFrameTypeFlags flags)
        {
            IEnumWindowFrames enumFrames;
            var hr = vsShell.GetWindowEnum((uint)flags, out enumFrames);

            return(ErrorHandler.Failed(hr) ? Result.CreateError(hr) : enumFrames.GetContents());
        }
Пример #4
0
        public static IEnumerable <IVsWindowFrame> EnumerateWindows(this IVsUIShell4 shell, __WindowFrameTypeFlags flags, Guid?windowGuid = null)
        {
            IEnumWindowFrames enumerator;

            ErrorHandler.ThrowOnFailure(shell.GetWindowEnum((uint)flags, out enumerator));

            var  frames  = new IVsWindowFrame[1];
            uint fetched = 0;

            while (VSConstants.S_OK == enumerator.Next(1, frames, out fetched) && fetched > 0)
            {
                var frame = frames[0];

                bool include = true;
                if (windowGuid.HasValue)
                {
                    Guid persist;
                    ErrorHandler.ThrowOnFailure(frame.GetGuidProperty((int)__VSFPROPID.VSFPROPID_GuidPersistenceSlot, out persist));
                    include = persist == windowGuid;
                }

                if (include)
                {
                    yield return(frame);
                }
            }
        }