简体   繁体   English

在Windows 10上隐藏和显示任务栏

[英]Hide and Show taskbar on windows 10

I have a wpf application which is in maximized state always without showing taskbar. 我有一个WPF应用程序,始终处于最大化状态,而不会显示任务栏。 Here is the code for Hiding and showing taskbar. 这是隐藏和显示任务栏的代码。

    [DllImport("user32.dll")]
    private static extern int FindWindow(string className, string windowText);

    [DllImport("user32.dll")]
    private static extern int ShowWindow(int hwnd, int command);

    private const int SW_HIDE = 0;
    private const int SW_SHOW = 1;

    static int hwnd = FindWindow("Shell_TrayWnd", "");

    public static new void Hide()
    {
        ShowWindow(hwnd, SW_HIDE);    
    }
    public static new void Show()
    {
        ShowWindow(hwnd, SW_SHOW);
    }

This is working fine on windows 7. But when application runs on Windows 10.. taskbar didnt show up again by calling show(). 这在Windows 7上正常运行。但是,当应用程序在Windows 10上运行时,任务栏没有通过调用show()再次显示。

Here is the part where I am calling show() 这是我正在调用show()的部分

  #region Show Desktop
    private void Desktop_MouseUp(object sender, MouseButtonEventArgs e)
    {
        if (e.ChangedButton == MouseButton.Left )
        {
            this.WindowState = System.Windows.WindowState.Minimized;
            Shell32.Shell objShel = new Shell32.Shell();              
            objShel.MinimizeAll();
            Show();
        }

    }

#endregion

This works on the main display and is taken from here and converted to c#. 这在主显示屏上起作用,并从此处获取并转换为c#。

public static class Taskbar
{
    [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
    private static extern IntPtr FindWindow(
        string lpClassName,
        string lpWindowName);

    [DllImport("user32.dll", SetLastError = true)]
    private static extern int SetWindowPos(
        IntPtr hWnd,
        IntPtr hWndInsertAfter,
        int x,
        int y,
        int cx,
        int cy,
        uint uFlags
    );

    [Flags]
    private enum SetWindowPosFlags : uint
    {
        HideWindow = 128,
        ShowWindow = 64
    }

    public static void Show()
    {
        var window = FindWindow("Shell_traywnd", "");
        SetWindowPos(window, IntPtr.Zero, 0, 0, 0, 0, (uint) SetWindowPosFlags.ShowWindow);
    }

    public static void Hide()
    {
        var window = FindWindow("Shell_traywnd", "");
        SetWindowPos(window, IntPtr.Zero, 0, 0, 0, 0, (uint)SetWindowPosFlags.HideWindow);
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM