Tim Meddick said:
No, the reg key / value that you mention [IconStream] is responsible for
maintaining and reproducing the list found in :
TaskBar Control Panel > Hide Inactive Icons >
Customize
...shows a list of both "Current Icons" and "Past Icons" together with
check-boxes to enable / disable said icons from being shown by default
(when the "Hide Inactive Icons" feature is invoked), and it's these lists
of icons that are defined by the key / values :
[HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\TrayNotify]
..."IconStreams" and " PastIconStreams" respectively, and has nothing at
all to do with actually holding icons in the actual Taskbar Notification
Area itself, just the lists in the Taskbar's "Customize Notifications"
control.
("Customize Notifications" Screenshot)
http://twitpic.com/azkzn9
==
Cheers, Tim Meddick, Peckham, London.
VanguardLH said:
My guess (without using the software to monitor its registry accesses
via SysInternals' RegMon or ProcMon) is that they read the following
registry entry:
Key: HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\TrayNotify
Data item: IconStreams
I don't know what is the structure for this string but looking at it
shows some text that describes icons for the programs that I see in the
system tray.
Yes, Customize does show the current and past icon histories. The
current list does NOT list just the visible tray icons. The current
list is ALL tray icons in the system tray regardless of whether their
state is visible or hidden. Even if you configure Windows to NOT hide
inactive icons, the list of all CURRENT tray icons is still listed in
that registry key. That a tray icon has an always-show, always-hide, or
hide-when-inactive attribute does NOT remove it from the current list.
That is *Windows* list of tray icons (whether they have the always-show,
always-hide, or hide-when-inactive attribute). You can delete those
registry keys but that won't make the tray icons disappear. You can use
a policy to completely hide the system tray but that doesn't preclude
the *current* (active) tray icons from getting listed in the IconStreams
registry data item; see
http://samanathon.com/registry-hack-hide-all-icons-in-the-notification-area-system-tray/.
When you disable or delete that policy and relogin, poof, all those tray
icons are still there in the system tray and the IconStreams still lists
all those currently active tray icons. Even when the system tray is not
visible via policy, IconStreams will still get populated with ALL the
currently existing tray icons (as the apps populate the system tray with
their call to Shell_NotifyIcon). The apps manage their own tray icons
through the Shell_NotifyIcon system call:
http://msdn.microsoft.com/en-us/library/windows/desktop/bb762159(v=vs.85).aspx
The IconStreams data item is just a list. It is not a control over the
*existence* of the tray icons. It probably does contain the display
state attribute (always-on, always-hide, hide-when-inactive) but that
doesn't change that ALL tray icons will be listed in this data item.
Since it is just a list, it doesn't manage whether the tray icons exist
or not. It can only affect whether they are visible or not as an
attribute list employed by the Windows taskbar on HOW it shows those
existing tray icons.
If you delete the IconStreams data item from the registry, and you load
a *fresh* instance of JAWS (so it never saw a prior list of tray icons),
does it still list all the tray icons (whether they are visible or
hidden)? If so, what do YOU see (using something like SysInternals'
ProcMon) for where JAWS interrogates the registry to get a list of the
tray icons? I showed where is maintained a *list* of current icons
(whether hidden or visible). This is not a control over what tray icons
that can exist. If you think some other registry value holds the
current list of tray icons that a program can interrogate then please
enlighten us.