Скрытие окна без границ в меню ALT+TAB
Я разрабатываю приложение Tray с Borderless Form, которое работает в фоновом режиме. если пользователь хочет выполнить различные операции, он может открыть контекстное меню, щелкнув правой кнопкой мыши значок в трее (NotifyIcon).
поэтому мои требования таковы:
1. Приложение всегда запускается в свернутом режиме, и отображается Traicon.
2. Приложение не должно отображаться на панели задач.
3. Приложение не должно быть видно из меню ALT+TAB.
Я реализовал два вышеупомянутых требования, но, пытаясь скрыть приложение из меню ALT+Tab, оно работает (не видно из ALT+TAB), но создает маленькое окантованное окно с заголовком приложения в левом боковом углу в верхней части панели задач, как показано ниже. образ:
Я хочу удалить это маленькое окаймленное окно.
Вот мой код:
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);
}
PS: я просмотрел несколько похожих постов в Stackru, но ни один из них не сталкивался с подобной проблемой.
2 ответа
Я сделал это перед использованием this.Opacity=0;
, Отчасти хакерский, но с WinForms это может быть единственный выход.
Если у вас есть форма без полей, то есть FormBorderStyle.None, то ShowInTaskbar = False не работает. Итак, мы должны установить WS_EX_TOOLWINDOW в значение true в дополнение к Me.ShowInTaskbar = False.
Это не от меня, а от этого: http://www.codeproject.com/Tips/135076/Hiding-the-form-from-alt-tab-menu
Вы всегда можете попытаться установить borderstyle на то, что вы хотите, когда форма становится видимой (и повернуть его обратно, когда вы потеряете фокус)