private const int WM_QUERYENDSESSION = 0x11;
private bool endSessionPending;
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_QUERYENDSESSION)
endSessionPending = true;
base.WndProc(ref m);
}
protected override void OnClosing(CancelEventArgs e)
{
if (endSessionPending)
{
e.Cancel = false;
}
else
{
e.Cancel = true;
MinimizeInTray();
}
base.OnClosing(e);
}
Step 2 : The form will not appear on taskbar
private void MinimizeInTray()
{
this.ShowInTaskbar = false;
this.Visible = false;
this.WindowState = FormWindowState.Minimized;
}
Step 3 : Add a notify icon to the form, then you can choose to put this code on notify icon click event or to a menu item click event :
private void openForm_Click(object sender, System.EventArgs e)
{
ShowFromTray();
}
private void ShowFromTray()
{
this.WindowState = FormWindowState.Normal;
this.ShowInTaskbar = true;
this.Visible = true;
}
2 commentaires:
ça serait bien si tu donnes un cas d'utilisation... le pk du comment :)
Sinon, ça roule ton code ;-) thks
Bein c'est trés util de reduire ton application au Systray, pleins de cas et d'exemple : emule, flashget...
géneralement pour une application persistante, on clique sur le (x), au lieu qu'elle se ferme, elle est réduite !!
Enregistrer un commentaire