从ALT + TAB菜单隐藏无边框窗口

时间:2014-12-09 12:17:18

标签: c# .net winforms

我正在开发一个在后台运行的无边框窗体的托盘应用程序。 如果用户想要执行不同的操作,可以通过右键单击托盘图标(NotifyIcon)打开上下文菜单。

所以我的要求是:

1.应用程序始终以最小化模式启动,并显示trayicon 2.应用程序不应出现在任务栏中 3.从ALT + TAB菜单中看不到应用程序。

我已经实现了以上两个要求但是在尝试从ALT + Tab菜单中隐藏应用程序时它正在工作(从ALT + TAB看不到),但它创建了一个带有应用程序标题的小边窗口,位于任务栏顶部的左侧角落如下图所示: enter image description here

我想删除那个小边窗口。

这是我的代码:

    public Form1()
    {
        InitializeComponent();
        this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
        HideThisForm();
    }

    protected override CreateParams CreateParams
    {
        get
        {
            // Turn on WS_EX_TOOLWINDOW style bit
            CreateParams cp = base.CreateParams;
            cp.ExStyle |= 0x80;
            return cp;
        }
    }

    private void HideThisForm()
    {

        this.ShowInTaskbar = false;
        this.WindowState = FormWindowState.Minimized;
        this.Hide();

        notifyApp.Visible = true;
        notifyApp.ShowBalloonTip(2000, "BackgroundApp", 
                    "This APP is running @ Background", ToolTipIcon.Info);
    }

P.S:我在StackOverflow中经历过几篇类似的帖子,但没有一个面临类似的问题。

2 个答案:

答案 0 :(得分:2)

我在使用this.Opacity=0;之前完成了这项工作。有点hackish,但使用WinForms,它可能是唯一的方法。

答案 1 :(得分:0)

如果你有一个无边框形式,即FormBorderStyle.None,则ShowInTaskbar = False不起作用。因此,除了Me.ShowInTaskbar = False之外,我们还应该将WS_EX_TOOLWINDOW设置为true。

这不是来自我,而是来自这个:http://www.codeproject.com/Tips/135076/Hiding-the-form-from-alt-tab-menu

当表单变得可见时,你总是可以尝试将bordertyle设置为你想要的东西(当你失去焦点时将它转回来)