Over the past month I’ve looked at how to implement a Windows 7-style notification area application in WPF.
I covered 6 different topics:
- Part 1: Removing Border Resize
- Part 2: Notify Icon Position – Windows 7
- Part 3: Taskbar Position
- Part 4: Multiple Monitors & Working Area
- Part 5: Fixing Aero Border Padding
- Part 6: Notify Icon Position – Pre-Windows 7
As promised, I’ve put together a small sample project to illustrate all this code working together (with some added polish):
NotifyIconSample.7z
42,775 bytes; SHA-1: 513E998F4CCFC8C5BB6CA9F8001DA204C80FDF3A
The code has a good level of documentation, but I recommend you read the above posts to understand the ideas behind it.

6 comments
Skip to comment form ↓
AU Alahakone
2011-06-15 at 18:57 (UTC 11) Link to this comment
Good article… Thank you
However, the application has some issues when we use an external monitor. When the monitor is connected, the application is unable to get the mouse click on the Quppa link. This only happens in this application.
This is using a touch screen PC connected to an external monitor via HDMI. The change in resolution seems to be the problem
Admin edit: this is possibly a bug related to touch input and WPF.
Nicky
2011-08-20 at 06:37 (UTC 11) Link to this comment
Do you happen to have any VB.net examples of removing the border resize and finding the icon position?
quppa
2011-08-25 at 01:24 (UTC 11) Link to this comment
@Nicky: No, and my VB.NET syntax is rusty. You could always try an automated code converter.
Nicky
2011-09-17 at 20:49 (UTC 11) Link to this comment
I’ve got this working in VB now, do you know if there is a way of telling whether the icon is on the taskbar or in the hidden icon box? The Microsoft design guidelines say icons on the taskbar should use muted colours so I’d like to swap the icon depending on where it is.
quppa
2011-09-17 at 22:09 (UTC 11) Link to this comment
@Nicky: The system icons don’t change appearance depending on their location, but if you want to do that, it should be easy enough.
There’s a function called IsNotifyIconInFlyOut() (with two overloads) in WindowPositioning.cs that does what you need. It just checks whether the icon’s bounding rectangle is outside the taskbar’s bounding rectangle (though it always returns false if the fly-out is closed).
William
2013-03-08 at 08:42 (UTC 11) Link to this comment
Thanks so much for this! I have been looking exactly this. Great post!