Beispiel #1
0
        // protected constructor
        protected WindowsTaskBarInfo()
        {
            // if we can't get anything else
            screenArea = workArea = SystemParameters.WorkArea;
            edge       = Win32.TaskBarEdge.Bottom;

            //Fixed 10536 because Win32.SHAppBarMessage works incorrectly when running IDVault as admin while login as limit user(user or guest group)
            Screen screen = GetScreenWithTaskBar();

            if (screen != null)
            {
                screenArea = new Rect(
                    ConvertPixelsToDIPixels(screen.Bounds.X),
                    ConvertPixelsToDIPixels(screen.Bounds.Y),
                    ConvertPixelsToDIPixels(screen.Bounds.Width),
                    ConvertPixelsToDIPixels(screen.Bounds.Height)
                    );

                workArea = new Rect(
                    ConvertPixelsToDIPixels(screen.WorkingArea.X),
                    ConvertPixelsToDIPixels(screen.WorkingArea.Y),
                    ConvertPixelsToDIPixels(screen.WorkingArea.Width),
                    ConvertPixelsToDIPixels(screen.WorkingArea.Height)
                    );
                edge = TaskBarLocation(screen);
            }
        }
Beispiel #2
0
        /// <summary>
        /// Get taskbar location for setting edge.
        /// </summary>
        /// <param name="screen"></param>
        /// <returns></returns>
        private Win32.TaskBarEdge TaskBarLocation(Screen screen)
        {
            Win32.TaskBarEdge        taskbarLoc        = Win32.TaskBarEdge.Bottom;
            System.Drawing.Rectangle singleScreenArea  = screen.Bounds;
            System.Drawing.Rectangle singleWorkingArea = screen.WorkingArea;
            bool leftAligned   = (singleScreenArea.Left.Equals(singleWorkingArea.Left)) ? true : false;
            bool rightAligned  = (singleScreenArea.Right.Equals(singleWorkingArea.Right)) ? true : false;
            bool topAligned    = (singleScreenArea.Top.Equals(singleWorkingArea.Top)) ? true : false;
            bool bottomAligned = (singleScreenArea.Bottom.Equals(singleWorkingArea.Bottom)) ? true : false;

            if (!leftAligned)
            {
                taskbarLoc = Win32.TaskBarEdge.Left;
            }
            else if (!rightAligned)
            {
                taskbarLoc = Win32.TaskBarEdge.Right;
            }
            else if (!topAligned)
            {
                taskbarLoc = Win32.TaskBarEdge.Top;
            }
            else if (!bottomAligned)
            {
                taskbarLoc = Win32.TaskBarEdge.Bottom;
            }

            return(taskbarLoc);
        }