-1

我有一个正在开发的应用程序(为我自己),我想完全阻止 Window 显示。


到目前为止,我得到的是WindowState.Minimized使表单的初始状态最小化。当我单击任务栏中的应用程序图标时,我希望它保持最小化 - 而不仅仅是Hide()它显示时。所以我认为这样的事情可能会起作用:

protected override void OnGotFocus(EventArgs e)
{
    this.WindowState = WindowState.Minimized;
}

但是我错了。所以我在想的是我需要以前 OnGotFocus发生的事情。仅在获得焦点时隐藏它是不够的,因为您可以非常隐约地看到,当您在this.WindowState = WindowState.Minimize调用之前单击任务栏中的图标时,它确实会显示自己。

我唯一的要求是在任务栏上单击它的图标时不得显示该应用程序。不过,在某些时候,我需要以编程方式显示窗口。

如何确保单击其图标永远不会显示窗口?

4

2 回答 2

3

这似乎对我有用,没有“提示”它来来去去:

    protected override void WndProc(ref Message m)
    {
        if (m.Msg == 0x0112)  //WM_SYSCOMMAND
        {
            if ((m.WParam.ToInt32() & 0xFFF0) == 0xF030 ||
                (m.WParam.ToInt32() & 0xFFF0) == 0xF120)
                m.WParam = new IntPtr(0xF020);
        }
        base.WndProc(ref m);
    }

只需覆盖WndProcand 这将同时捕获SC_MAXIMIZE (0xF030)and SC_RESTORE (0x0F120)SC_MINIMIZE is 0xF020.

正如汉斯建议的那样,我已经编辑了我的帖子,以屏蔽掉系统在此 MSDN 部分中使用的低位:http: //msdn.microsoft.com/en-us/library/windows/desktop/ms646360 (v =vs.85).aspx

于 2013-06-17T11:14:55.957 回答
0

您好,您可以使用 form_resize 事件触发 windowstate 最小化

    private void Form1_Resize ( object sender , EventArgs e )
    {
        if ( WindowState == FormWindowState.Maximized )
        {
            // minimize it here
        }
    }
于 2013-06-17T11:13:55.207 回答