Snarl is a notification engine for Windows, which allows other programs to send notifications to the user in an easy and managed way. For more information about Snarl visit:

Snarl API

I am maintaining the C++ and C# API wrapper classes, which makes it really easy to work with Snarl.
The Snarl API is described here.

Snarl C++ Interface

A C++ implementation of SnarlInterface can be found in the official Snarl SVN: /trunk/hdr/C++/. Newest API version implemented is V42, which works with Snarl 2.0 and newer. The interface abstracts away the underlying protocol and provides helper functions to deal with Snarl.

const LPCTSTR APP_ID = _T("CppTest");

SnarlInterface snarl;
snarl.Register(APP_ID, _T("C++ test app"), NULL);
snarl.AddClass(_T("Class1"), _T("Class 1"));
snarl.Notify(_T("Class1"), _T("C++ example 1"), _T("Some text"), 10);

tout << _T("Hit a key to unregister") << std::endl;

See the sample code in SVN for more examples.

Snarl C# Interface

To use Snarl from C# you can use the SnarlInterface class from the official Snarl SVN: /trunk/hdr/C%23/
See /trunk/hdr/C%23/_Readme.txt for more information.