2014-12-09 76 views
3

我正在开发一个无边框形式的托盘应用程序,该应用程序在后台运行。 如果用户想要执行不同的操作,他们可以通过右键单击托盘图标(NotifyIcon)来打开上下文菜单。从ALT + TAB菜单中隐藏无边界窗口

所以我的要求是:

一,应用总是以最小化模式和任务栏图标将非常具有显示。
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

我在使用this.Opacity=0;之前已完成此操作。有点骇人,但用WinForms,它可能是唯一的方法。

+0

是通过设置'this.Opacity = 0;'使边缘窗口不可见,但是我应该在何时更改不透明度以使其可见。 – 2014-12-09 12:36:31

+0

@SudhakarTillapudi - 我的印象是你从来不需要看你的表格,你只需要一个托盘菜单。 – 2014-12-09 12:38:43

+0

有效点,但作为其中一个上下文菜单选项,我必须打开Window.i,通过在contextmenuitem_click事件中更改不透明度(设置为100)来解决问题,请允许我尝试。谢谢 – 2014-12-09 12:46:37

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

你总是可以尝试设置你希望在形式变得可见的边框的东西(和重新打开它时,你失去焦点)

+0

感谢您的回答,我打开'WS_EX_TOOLWINDOW'通过''cp.ExStyle'与'0x80'的或。你的第二个建议我尝试过,但仍然是它创建的边缘窗口。 – 2014-12-09 12:28:24