#region API : Méthodes [DllImport("shell32.dll")] private static extern bool Shell_NotifyIcon( uint dwMessage, [In] ref NOTIFYICONDATA pnid ); #endregion #region API : Structs [StructLayout(LayoutKind.Sequential)] private struct NOTIFYICONDATA { public int cbSize; public IntPtr hWnd; public int uID; public int uFlags; public int uCallbackMessage; public IntPtr hIcon; [MarshalAs(UnmanagedType.ByValTStr, SizeConst=128)] // 64 si < win 2000 public string szTip; public int dwState; public int dwStateMask; [MarshalAs(UnmanagedType.ByValTStr, SizeConst=256)] public string szInfo; public int uVersion; [MarshalAs(UnmanagedType.ByValTStr, SizeConst=64)] public string szInfoTitle; public int dwInfoFlags; } #endregion #region API : Constantes private const int WM_MOUSEMOVE = 0x0200; private const int WM_LBUTTONDOWN = 0x0201; private const int WM_LBUTTONUP = 0x0202; private const int WM_LBUTTONDBLCLK = 0x0203; private const int WM_RBUTTONDOWN = 0x0204; private const int WM_RBUTTONUP = 0x0205; private const int WM_RBUTTONDBLCLK = 0x0206; private const int WM_MBUTTONDOWN = 0x0207; private const int WM_MBUTTONUP = 0x0208; private const int WM_MBUTTONDBLCLK = 0x0209; private const int NIM_ADD = 0x00000000; private const int NIM_MODIFY = 0x00000001; private const int NIM_DELETE = 0x00000002; private const int NIF_MESSAGE = 0x00000001; private const int NIF_ICON = 0x00000002; private const int WM_APP = 0x8000; #endregion
private NOTIFYICONDATA nIconData; private void ShellAddNotifyIcon() { Shell_NotifyIcon(NIM_ADD, ref nIconData); } private void ShellDeleteNotifyIcon() { Shell_NotifyIcon(NIM_DELETE, ref nIconData); } // override du WndProc de notre Form afin de traiter les messages qui nous interessent protected override void WndProc(ref Message m) { if ( m.Msg == WM_APP + 0x1 ) { // il s'agit d'un message associé à notre notifyicon, à nous de le traiter switch ( (int)m.LParam ) { case WM_LBUTTONDOWN: // bouton gauche enfoncé label_Status.Text = "WM_LBUTTONDOWN"; break; case WM_LBUTTONUP: // bouton gauche relaché label_Status.Text = "WM_LBUTTONUP"; break; case WM_LBUTTONDBLCLK: // dblck bouton gauche MessageBox.Show("Hello !!!"); break; } } else base.WndProc (ref m); } private void Form1_Load(object sender, System.EventArgs e) { ShellAddNotifyIcon(); } private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e) { ShellDeleteNotifyIcon(); }
nIconData = new NOTIFYICONDATA(); nIconData.cbSize = Marshal.SizeOf(nIconData); nIconData.hWnd = this.Handle; nIconData.uID = 0; nIconData.uFlags = NIF_ICON | NIF_MESSAGE; nIconData.uCallbackMessage = WM_APP + 0x1; // le message qui sera reçu pour identifier un message venant de notre notifyicon nIconData.hIcon = this.Icon.Handle; // icone de notre appli
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question