枚举托盘图标,或查找创建图标的进程,高手们有答案么?

解决方案 »

  1.   

    HWND hTray=::FindWindow("Shell_TrayWnd",NULL);
    if (hTry==NULL) retrun;
    HWND hToolBar=::FindWindowEx(hTray,NULL,"ToolbarWindow32",NULL);
    if (hToolBar==NULL) return;
    //
    //hToolBar的句柄有了,操作应该与标准的MFC中的CTollBar差有多吧?
      

  2.   

    lzzqqq(Jonersen) ( )说的方法可行,你可以SPY工具把窗口信息给查出来,然后在查找!
    但他的方法好像不行
    因为托盘图标的窗口虽然是toolbarWindow32,但它并不是Shell_TrayWnd的直接子窗口,
    而是TrayNotifyWnd的直接子窗口,而TrayNotifyWnd则是Shell_TrayWnd的直接子窗口,若
    FindWindowEx能查找子子窗口的话则就没有问题可行
      

  3.   

    lzzqqq(Jonersen)的方法查找出的handle将是快速启动栏(ToolBarWindow32)的句柄,而不是托盘图标的
    handle
      

  4.   

    我来说两句,关于创建图标的进程的:
    首先得到当前系统中所有的进程,然后分别向每个进程发送Shell_NotifyIcon消息,返回值根据MSDN(Returns nonzero if successful, or zero otherwise),可以得到进程信息。这个方法是笨了一点,效率也不高,但是我认为还是可行。错了大家不要骂我啊~~~~~