static public extern int Shell_NotifyIcon(NotifyCommand cmd, ref NOTIFYICONDATA data);
/// <summary> /// Function create struct which used Shell_NotifyIcon API function /// </summary> /// <param name="flags"></param> /// <returns></returns> private NOTIFYICONDATA CreateNotifyStruct( NotifyFlags flags, bool bSkip ) { NOTIFYICONDATA data = new NOTIFYICONDATA(); data.cbSize = (uint)Marshal.SizeOf( data ); data.hWnd = m_handle; data.uID = m_id; data.uCallbackMessage = 0x400; data.uFlags |= flags; if( m_icon != null ) { data.hIcon = m_icon.Handle; // this should always be valid } else { if( m_imgList != null && m_imgList.Images.Count > 0 ) { Bitmap bmp = new Bitmap( m_imgList.Images[ 0 ], 16, 16 ); data.hIcon = bmp.GetHicon(); } } data.szTip = m_text; if( !bSkip ) { if( !m_visible ) data.dwState = NotifyState.NIS_HIDDEN; data.dwStateMask |= NotifyState.NIS_HIDDEN; } return data; }
/// <summary> /// Method remove/delete icon from tray /// </summary> private void Remove() { if( m_id != 0 ) { // remove the notify icon NOTIFYICONDATA data = new NOTIFYICONDATA(); data.cbSize = (uint)Marshal.SizeOf(data); data.hWnd = m_handle; data.uID = m_id; WindowsAPI.Shell_NotifyIcon( NotifyCommand.NIM_DELETE, ref data ); m_id = 0; RefreshSystemTray(); } }
public static extern int Shell_NotifyIcon( NotifyCommand cmd, ref NOTIFYICONDATA data );