::Overview::
Several components within geOShell work together to provide suport for the system tray.
These are the geOShell application itself, the geOTraySpy dll and the
geOTray plugin.
The rest of this page discusses how these components fit together and how their behaviour differs depending on wether geOShell is run over the top of Explorer or as an indepenendant shell.
::geOShell::
geOShell acts as an intermediary between the OS and the plugin which ultimately displays the tray (currently geOTray).
If geOShell is the shell, then it registers itself as the application responsible for managing the tray and automatically receives all tray related messages from the OS. geOShell then maintains a list of current entries in the tray and supplies this information to any plugin which registers an interest.
If geOShell is running on top of Explorer then things are more difficult. It can't get hold of tray messages directly from the OS because Explorer will already be doing this and only one application can register to receive them. This is where geOTraySpy comes in.
::geOTraySpy::
geOTraySpy is a dll which hooks into the Windows message queue in such a way that it receives copies of all the messages destined for the application registered as the system tray manager.
So what does geOTraySpy do with the tray related messages it receives ? Three things....
- it maintains a list of the current items in the tray.
- it sends a copy of each message to geOShell, if it is running on top of Explorer .
- it will resend to geOShell it's list of current entries, on request (e.g. after recycling the shell).
Loading geOTraySpy gives the following advantages when geOShell is running on top of Explorer:
- Tray support is available.
- geOShell can be stopped and restarted without losing Tray icons.
If geOShell is the shell, then geOTraySpy does not offer any advantages (but won't do any harm other than using up some resource).
If you don't run geOTraySpy, then everything is the same as it ever was.
::Configuration and Usage::
To load geOTraySpy you need to run the geOHookLoader application in the geOShell directory.
To unload it run "unload_hookLoader" in the commands directory.
If you want geOHookLoader to load automatically at startup add the following entry to the registry:
HKLM\Software\Microsoft\Windows\CurrentVersion\Run\AA-geOHookLoader=geOShellInstallDir\geOHookLoader.exe -s
Where "geOShellInstallDir" is the full path to the geOShell installation directory.
::Limitations::
The tray entries which geOTraySpy knows about depend on when it is started. Tray messages are often only sent once and if they are sent before geOTraySpy is loaded then they are missed for good.
::Credits::
geOTraySpy is based on Mike Lin's
TraySaver app.