小弟近日想做一个可以隐藏系统托盘栏图标的小程序, 已经基本明白其中奥妙, 原来系统在添加一个托盘栏图标时,任务栏将收到一个WM_COPYDATA的消息, 于是我使用Hook的方法截获这个消息, 取得添加图标的信息, 可是我确没有办法将这些图标隐藏掉, 调用Shell_NotifyIcon函数总是不能成功, 郁闷之极, 望高手指点!

解决方案 »

  1.   

    CTrayIcon m_TrayIcon;隐藏窗口
    HICON hIcon;hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
    m_TrayIcon.Create(this, WM_ICON_NOTIFY, "GetIP", 
                              hIcon, IDR_POPUP_MENU);
    ShowWindow(SW_HIDE);
    UpdateData(); 显示窗口(接消息)
    ShowWindow(SW_SHOWNORMAL);
    m_TrayIcon.RemoveIcon();
      

  2.   

    这里有一个2000下面的解决方法,在98我也不知道。http://www.csdn.net/expert/topic/929/929648.xml?temp=.4646265
      

  3.   

    这里有一个2000下面的解决方法,在98我也不知道。http://www.csdn.net/expert/topic/929/929648.xml?temp=.4646265
      

  4.   

    Shell_NotifyIcon 的第一个参数可以是NIM_ADD, NIM_DELETE等
    你用NIM_DELETE不就OK了?
      

  5.   

    Shell_NotifyIcon,应该好用,只是参数的设置问题,我用过。
      

  6.   

    WND hWnd;
    Wnd = GetDesktopWindow();
    if ((hWnd = FindWindowEx(hWnd, 0, "Progman", "Program Manager")) == 0)
    return 1;

    if ((hWnd = FindWindowEx(hWnd, 0, "SHELLDLL_DefView", NULL)) == 0)
    return 1;

    if ((hWnd = FindWindowEx(hWnd, 0, "SysListView32", NULL)) == 0)
    return 1;
    // Change icon text attributes
    SendMessage(hWnd, WM_YOUMESSAGE, 0, 0xffffffff); // Turn 

      

  7.   

    可能要通过SHELL编程来改变原来的TRAY的处理过程!
    关注。
      

  8.   

    谢谢大家的帮忙,但是有一点好像大家理解错了, 我是想要使用程序来隐藏或者显示系统栏的图标, 这个图标不是我的程序本身的图标, 而是其他应用程序的图标.我使用Shell_NotifyIcon函数的设置没有问题, 我想可能是因为我不是设置图标的进程,所有没有办法结束, 可是我该怎么做呢.
      

  9.   

    试试这个CreateRemoteThread
    可能要实现进程注入