public override void ProcessWindowMessage(ref Message m)
        {
            if (m.Msg == MSG_SYSNOT || m.Msg == WM_COPYDATA)
            {
                if ((int)m.WParam == 97)
                {
                    COPYDATASTRUCT cds = new COPYDATASTRUCT();
                    cds = (COPYDATASTRUCT)m.GetLParam(typeof(COPYDATASTRUCT));
                    //Console.WriteLine(cds.cbData);
                    //Console.WriteLine(cds.dwData);
                    //Console.WriteLine(cds.lpData);

                    TRAYINFO ti = new TRAYINFO();
                    ti = (TRAYINFO)Marshal.PtrToStructure(cds.lpData, typeof(TRAYINFO));
                    Console.WriteLine("_title: " + ti.nid.szInfoTitle);
                    Console.WriteLine("_text: " + ti.nid.szInfo);

                    if (!String.IsNullOrEmpty(ti.nid.szInfo))
                    {
                        OnSystemBalloonIntercepted(ti.nid.szInfoTitle, ti.nid.szInfo, null);
                    }

                    m.Result = new IntPtr(1);
                }
            }
            else if (m.Msg == MSG_REPLACED)
            {
                if (HookReplaced != null)
                {
                    HookReplaced();
                }
            }
        }
        public override void ProcessWindowMessage(ref Message m)
        {
            if (m.Msg == MSG_SYSNOT || m.Msg == WM_COPYDATA)
            {
                if ((int)m.WParam == 97)
                {
                    COPYDATASTRUCT cds = new COPYDATASTRUCT();
                    cds = (COPYDATASTRUCT) m.GetLParam(typeof(COPYDATASTRUCT));
                    //Console.WriteLine(cds.cbData);
                    //Console.WriteLine(cds.dwData);
                    //Console.WriteLine(cds.lpData);

                    TRAYINFO ti = new TRAYINFO();
                    ti = (TRAYINFO)Marshal.PtrToStructure(cds.lpData, typeof(TRAYINFO));
                    Console.WriteLine("_title: " + ti.nid.szInfoTitle);
                    Console.WriteLine("_text: " + ti.nid.szInfo);

                    if(!String.IsNullOrEmpty(ti.nid.szInfo))
                        OnSystemBalloonIntercepted(ti.nid.szInfoTitle, ti.nid.szInfo, null);

                    m.Result = new IntPtr(1);
                }
            }
            else if (m.Msg == MSG_REPLACED)
            {
                if (HookReplaced != null)
                    HookReplaced();
            }
        }