Seeking examples about programming of shell extension in .NET I found this framework. It simplifies a lot the programming of a shell extension and is also relatively simple of modifying to add some new functionality (I included it the capacity to show contextual menus without select an object).
I had been using this excellent component (developed by Kamran M. Qamar) to download messages from POP3 server. It works well but It has a small bug in the method SaveAs of the Attachment class: The files are saved empty. This is the improvement:
public void SaveAs(string path, string fileName)
string FullName = path + “\\” + fileName;
FileStream file = new FileStream(FullName, FileMode.Create, FileAccess.ReadWrite);
byte buffer = ((MemoryStream)_part.BodyStream).ToArray( );
file.Write( buffer, 0, buffer.Length);