/// <summary>
		/// Gets the document type of a file.
		/// </summary>
		/// <param name="fullpath">Full path to file.</param>
		/// <returns>Document type of file.</returns>
		public static String GetFileType(String fullpath)
		{
			int retval = 0;
			var info = new Win32API.Shell32.SHFILEINFO(true);

			retval = Win32API.Shell32.SHGetFileInfo(fullpath, 0, ref info, Marshal.SizeOf(info), Win32API.Shell32.SHGFI_TYPENAME);
			if (retval == 0)
				return "Unknown";		// Error occured
			else
				return info.szTypeName;			
		}
		/// <summary>
		/// Gets the icon associated with a given file.
		/// </summary>
		/// <param name="fullpath">Path to file.</param>
		/// <param name="iconSize">Size of icon to return.</param>
		/// <returns>Icon associated with the given file.</returns>
		public static Icon GetFileIcon(String fullpath, FileIconSize iconSize) 
		{
			var retval = 0;
			var info = new Win32API.Shell32.SHFILEINFO();
			uint flags = Win32API.Shell32.SHGFI_USEFILEATTRIBUTES | Win32API.Shell32.SHGFI_ICON;

			if (iconSize == FileIconSize.Small)
			{
				flags |= Win32API.Shell32.SHGFI_SMALLICON;
			} 
			else if (iconSize == FileIconSize.Large)
			{
				flags |= Win32API.Shell32.SHGFI_LARGEICON;
			}

			retval = Win32API.Shell32.SHGetFileInfo(fullpath, Win32API.Shell32.FILE_ATTRIBUTE_NORMAL, ref info, Marshal.SizeOf(info), flags);
			if (retval == 0) return null;

			return Icon.FromHandle(info.hIcon);
		}