在任务管理器应用程序选项卡中隐藏Winform是否可能?

9

我正在编写一个透明的WinForms应用程序,我希望将该应用程序隐藏在任务管理器的应用程序选项卡中。事实上,它应该显示在进程中。

如果我设置:

this.ShowInTaskbar = false;

它只会从任务栏中隐藏。

我有一个由标签制作的计时器的完整代码。

        public Form1()
    {
        InitializeComponent();
        this.BackColor = Color.LimeGreen;
        this.TransparencyKey = Color.LimeGreen;
        Timer time = new Timer();
        time.Interval = 1000;
        time.Tick += new EventHandler(time_Tick);
        time.Start();
        this.ShowInTaskbar = false;


    }

    void time_Tick(object sender, EventArgs e)
    {
        label1_hour.Text = DateTime.Now.Hour.ToString() ;
        label_minute.Text = DateTime.Now.Minute.ToString();
        label_second.Text = DateTime.Now.Second.ToString();
    }

有的,你能展示一下完整的代码吗?在哪里你设置了this.ShowInTaskBar = false;? - MethodMan
2个回答

33

尝试像这样做:

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
        this.FormBorderStyle = FormBorderStyle.None;
        this.ShowInTaskbar = false;
    }
    protected override CreateParams CreateParams {
        get {
            var cp = base.CreateParams;
            cp.ExStyle |= 0x80;  // Turn on WS_EX_TOOLWINDOW
            return cp;
        }
    }
}

这会让它在任务管理器中隐藏吗? - NotMe
试一下吧,它应该会从任务管理器中隐藏。CreateParams重写了你所期望的预期结果。 - MethodMan
获取或设置扩展窗口样式值的按位组合。 ExStyle属性支持应用于控件的扩展外观和初始状态值。有关创建控件参数的更多信息,请参见Windows平台SDK参考中的CreateWindow和CreateWindowEx函数以及CREATESTRUCT结构文档。可在MSDN Library中找到该参考资料。 引自MSDN - http://msdn.microsoft.com/en-us/library/system.windows.forms.createparams.exstyle.aspx - MethodMan
Krishna,为什么这个对于你不起作用,当每个人都测试过了,John和awayoftarget也表示相反的意见..? - MethodMan
1
我已经从SharpDevelop IDE创建了一个示例项目,当我从IDE运行该项目时,该进程是不可见的,但是当我执行构建的exe文件时,它会在屏幕上显示一个没有边框的小窗体,并且在任务管理器中也有一个进程。 - Buddha

0

只需将表单属性FormBorderStyle设置为FixedToolWindow,就可实现我的目标。在Win 10中,这将使其从任务管理器的“应用程序”中移除,并将其放入“后台进程”……正如帖子所指定的那样(也是我想要的)。

此外,它还会使该窗体不再显示在“Windows键+Tab”窗口列表中……这也是我想要的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接