XP系统的托盘有个“隐藏不活动的图标”选项,我用regsnap看了一下,修改这个选项时对应注册表中HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer键下的EnableAutoTray值,但是用VB修改这个DWORD值后,是否隐藏不活动图标的效果并不会立即生效,而在设置“任务栏和开始菜单”中修改这个选项并点击应用按钮以后却会马上生效,看来需要向任务栏托盘发送消息来通知它作出响应,但是我试了SendMessage HWND_BRODCAST, WM_SETTINGCHANGE, 0&, 0&没有效果,用
    hwnd = FindWindow("Shell_TrayWnd", vbNullString)
    hwnd = FindWindowEx(hwnd, 0, "TrayNotifyWnd", vbNullString)
    hwnd = FindWindowEx(hwnd, 0, "SysPager", vbNullString)
    hwnd = FindWindowEx(hwnd, 0, "ToolbarWindow32", vbNullString)
获取句柄后,SendMessage hwnd, WM_SETTINGCHANGE, 0&, 0&也不行,哪位朋友知道是怎么回事啊?

解决方案 »

  1.   

    我用spy++监控了一下,发现在系统中修改“隐藏不活动的图标”选项时,rundll32.exe进程发送了4条WM_SETTINGCHANGE消息,但是我用VB模拟这4条消息,同样的目标句柄,同样的消息和参数,却没有达到同样的效果,有点奇怪。
      

  2.   

    加100分 & 自己顶!
      

  3.   

    如果你还没有解决刷新的问题,可以试试,用程序将explorer.exe进程关闭后,又再启动一下,看托盘中图标是否能够刷新如你所愿。
      

  4.   


    这样肯定行的,可是我不想用这个方法,因为把explorer.exe关闭再重新运行的这个过程中屏幕反应太大了。
      

  5.   


    谢谢,NotifyIconData好像是一个结构而不是函数,而且也无法解决这个问题。
      

  6.   

    http://topic.csdn.net/u/20080903/12/19c59e71-385c-4f61-916d-0d5020d8ccbf.html
    上面这个贴子是我发的,问题已经用其他方法解决了,我自己现在已经无法回复那个贴子了,大家去接分吧,别浪费了,先到先得哦!