Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

On start-up taskbar covers full screen C# application

I written a Kiosk style C# application using visual studio that is run on startup and should expand to full-screen and cover the task-bar.

I am doing the usual setting boarder style to none, and fill extents and it works perfectly if I just launch the application manually.

When the application launches on startup (by way of a short-cut in the startup folder in the start menu), the task-bar ends up on top of the program and clicking somewhere on the form does not bring the form back to the top.

Has anyone encountered this problem before, or know of possible workarounds.

like image 613
Hugoagogo Avatar asked Oct 21 '13 04:10

Hugoagogo


People also ask

Why is my taskbar over my fullscreen?

You might be playing on Borderless fullscreen, this can cause your taskbar to show while playing games as well. Just go into your game settings and try to change the screen resolution or change the fullscreen mode from “Borderless Fullscreen” to “Fullscreen”.

How do I stop the taskbar from popping up in full screen Windows 11?

Right-click on any empty space in the taskbar to bring up the context menu. Make sure that the Lock the taskbar option is not enabled. If it is, click on it once to turn it off and unlock the taskbar. Check if you're able to go fullscreen mode without the taskbar appearing on the screen.


1 Answers

I have also done this another time:

public class Screensize
{
    /// <summary>
    /// Selected Win AI Function Calls
    /// </summary>

    public class WinApi
    {
        [DllImport("user32.dll", EntryPoint = "GetSystemMetrics")]
        public static extern int GetSystemMetrics(int which);

        [DllImport("user32.dll")]
        public static extern void
            SetWindowPos(IntPtr hwnd, IntPtr hwndInsertAfter,
                         int X, int Y, int width, int height, uint flags);

        private const int SM_CXSCREEN = 0;
        private const int SM_CYSCREEN = 1;
        private static IntPtr HWND_TOP = IntPtr.Zero;
        private const int SWP_SHOWWINDOW = 64; // 0x0040

        public static int ScreenX
        {
            get { return GetSystemMetrics(SM_CXSCREEN); }
        }

        public static int ScreenY
        {
            get { return GetSystemMetrics(SM_CYSCREEN); }
        }

        public static void SetWinFullScreen(IntPtr hwnd)
        {
            SetWindowPos(hwnd, HWND_TOP, 0, 0, ScreenX, ScreenY, SWP_SHOWWINDOW);
        }
    }

    /// <summary>
    /// Class used to preserve / restore state of the form
    /// </summary>
    public class FormState
    {
        private FormWindowState winState;
        private FormBorderStyle brdStyle;
        private bool topMost;
        private Rectangle bounds;

        private bool IsMaximized = false;

        public void Maximize(Form targetForm)
        {
            if (!IsMaximized)
            {
                IsMaximized = true;
                Save(targetForm);
                targetForm.WindowState = FormWindowState.Maximized;
                targetForm.FormBorderStyle = FormBorderStyle.None;
                targetForm.TopMost = false;
                WinApi.SetWinFullScreen(targetForm.Handle);
            }
        }

        public void Save(Form targetForm)
        {
            winState = targetForm.WindowState;
            brdStyle = targetForm.FormBorderStyle;
            topMost = targetForm.TopMost;
            bounds = targetForm.Bounds;
        }

        public void Restore(Form targetForm)
        {
            targetForm.WindowState = winState;
            targetForm.FormBorderStyle = brdStyle;
            targetForm.TopMost = topMost;
            targetForm.Bounds = bounds;
            IsMaximized = false;
        }
    }

and just call in your form:

screensize.Maximize(this)

I think you mean this

And now I see this post is from 2013...

like image 103
Cageman Avatar answered Nov 22 '22 14:11

Cageman