Holy cow, I wrote a book!
Commenter Nick asks,
"How would you go about creating a special toolbar to
sit on the taskbar like the Windows Media Player 10 minimised toolbar?"
You would look at the
DeskBand API SDK Sample
in the Windows Platform SDK.
The magic word is DeskBand.
This MSDN page has an overview.
I've seen some online speculation as to whether a DeskBand counts
as a shell extension, because of the
guidance against writing shell extensions in managed code.
As with all guidance, you need to
understand the rationale behind the guidance
so you can apply the guidance intelligently instead of merely following
it blindly off a cliff.
Summarizing the rationale:
Since only one version of the CLR can exist in a process, any shell
extension which runs inside the host process which uses the CLR may
inject a version of the CLR that conflicts with the version of the CLR
the host process (or some other component in the host process)
wants to use.
Now that you understand the reason, you also can answer the question,
"Is a DeskBand a shell extension (for the purpose of this guidance)?"
Yes, because DeskBands
(like all other COM objects registered
as in-process servers) run inside the host process.
As another example of how
understanding the rationale behind guidance lets you know when the
guidance no longer applies:
In the time since the original guidance was developed,
the CLR team came up with a way to
run multiple versions of the CLR inside a single process (for specific
values of "multiple").
Therefore, if you use one of those "I won't conflict with other versions
of the CLR inside the same process" versions,
then you can see that the rationale behind the guidance no longer applies.