【问题标题】:Hide TaskBar in WinForms Application [duplicate]在 WinForms 应用程序中隐藏任务栏 [重复]
【发布时间】:2013-10-02 02:23:52
【问题描述】:

如何在运行 C# WinForms 应用程序时隐藏 Windows 任务栏?

我尝试了一些代码,但它以任务栏的最大化视图打开。

您有任何示例代码或建议吗?

【问题讨论】:

标签: c# winforms fullscreen


【解决方案1】:

你需要使用 P/INVOKE

[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;

int hwnd = FindWindow("Shell_TrayWnd","");
ShowWindow(hwnd,SW_HIDE);

希望对你有帮助

【讨论】:

    【解决方案2】:

    您需要从如下属性设置 WinForms 应用程序

    private void Form1_Load(object sender, EventArgs e)
        {
            this.TopMost = true;
            this.FormBorderStyle = FormBorderStyle.None;
            this.WindowState = FormWindowState.Maximized;
        }
    

    【讨论】:

    • 这不包括任务栏,但它几乎禁用了它的所有功能
    【解决方案3】:

    只需将此类添加到您的项目中即可。它可以按您的预期工作。

    using System;
    using System.Runtime.InteropServices;
    
    public class 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);
    
        [DllImport("user32.dll")]
        public static extern int FindWindowEx(int parentHandle, int childAfter, string className, int windowTitle);
    
        [DllImport("user32.dll")]
        private static extern int GetDesktopWindow();
    
        private const int SW_HIDE = 0;
        private const int SW_SHOW = 1;
    
        protected static int Handle
        {
            get
            {
                return FindWindow("Shell_TrayWnd", "");
            }
        }
    
        protected static int HandleOfStartButton
        {
            get
            {
                int handleOfDesktop = GetDesktopWindow();
                int handleOfStartButton = FindWindowEx(handleOfDesktop, 0, "button", 0);
                return handleOfStartButton;
            }
        }
    
        private Taskbar()
        {
            // hide ctor
        }
    
        public static void Show()
        {
            ShowWindow(Handle, SW_SHOW);
            ShowWindow(HandleOfStartButton, SW_SHOW);
        }
    
        public static void Hide()
        {
            ShowWindow(Handle, SW_HIDE);
            ShowWindow(HandleOfStartButton, SW_HIDE);
        }
    }
    

    用法:

    Taskbar.Hide();
    

    【讨论】:

    • 存在任何可以在第二个显示器上隐藏任务栏的方式
    • 是的,这也是可能的。它被命名为Shell_SecondaryTrayWnd。我认为您应该能够相应地调整上面的代码。请记住,在旧系统上或不存在辅助屏幕时,它可以是 null
    • 这会删除任务栏,但任务栏占用的空间仍然存在。它只是显示为背景颜色,但没有窗口可以扩展到它之外。有没有办法完全隐藏任务栏,以便所有窗口都最大化到屏幕的整个范围?
    猜你喜欢
    • 2012-01-04
    • 1970-01-01
    • 1970-01-01
    • 2017-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-26
    • 2011-08-31
    相关资源
    最近更新 更多