This is what I had written to better understand the API, in C++/CLI and for Windows Forms. One could use it like this:

System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {

   Drawing::Icon ^ ic = StockIcons::GetIcon(StockIconIdentifier::Shield, StockIconFlag::ShellSize);

   button->ImageList =  gcnew ImageList();

   button->ImageList->Images->Add(ic);

   button->ImageIndex = 0;

}

 

If you would rather have this in C#, translating it should not be that hard. (Hint: have a look at StockIcons for Windows Presentation Framework?)

#pragma once

 

using namespace System;

using namespace Drawing;

 

namespace VistaBridge { namespace UI {

 

public enum class StockIconFlag {

   Handle = SHGSI_ICON,

   SystemIndex = SHGSI_SYSICONINDEX,

   LinkOverlay = SHGSI_LINKOVERLAY,

   Selected = SHGSI_SELECTED,

   Large = SHGSI_LARGEICON,

   ShellSize = SHGSI_SHELLICONSIZE

};

 

// Once the final Windows SDK is released, delete this type:

typedef enum {

    SIID_DOCNOASSOC = 0,          // document (blank page), no associated program

    SIID_DOCASSOC = 1,            // document with an associated program

    SIID_APPLICATION = 2,         // generic application with no custom icon

    SIID_FOLDER = 3,              // folder (closed)

    SIID_FOLDEROPEN = 4,          // folder (open)

    SIID_DRIVE525 = 5,            // 5.25" floppy disk drive

    SIID_DRIVE35 = 6,             // 3.5" floppy disk drive

    SIID_DRIVEREMOVE = 7,         // removable drive

    SIID_DRIVEFIXED = 8,          // fixed (hard disk) drive

    SIID_DRIVENET = 9,            // network drive

    SIID_DRIVENETDISABLED = 10,   // disconnected network drive

    SIID_DRIVECD = 11,            // CD drive

    SIID_DRIVERAM = 12,           // RAM disk drive

    SIID_WORLD = 13,              // entire network

    SIID_SERVER = 15,             // a computer on the network

    SIID_PRINTER = 16,            // printer

    SIID_MYNETWORK = 17,          // My network places

    SIID_FIND = 22,               // Find

    SIID_HELP = 23,               // Help

    SIID_SHARE = 28,              // overlay for shared items

    SIID_LINK = 29,               // overlay for shortcuts to items

    SIID_SLOWFILE = 30,           // overlay for slow items

    SIID_RECYCLER = 31,           // empty recycle bin

    SIID_RECYCLERFULL = 32,       // full recycle bin

    SIID_MEDIACDAUDIO = 40,       // Audio CD Media

    SIID_LOCK = 47,               // Security lock

    SIID_AUTOLIST = 49,           // AutoList

    SIID_PRINTERNET = 50,         // Network printer

    SIID_SERVERSHARE = 51,        // Server share

    SIID_PRINTERFAX = 52,         // Fax printer

    SIID_PRINTERFAXNET = 53,      // Networked Fax Printer

    SIID_PRINTERFILE = 54,        // Print to File

    SIID_STACK = 55,              // Stack

    SIID_MEDIASVCD = 56,          // SVCD Media

    SIID_STUFFEDFOLDER = 57,      // Folder containing other items

    SIID_DRIVEUNKNOWN = 58,       // Unknown drive

    SIID_DRIVEDVD = 59,           // DVD Drive

    SIID_MEDIADVD = 60,           // DVD Media

    SIID_MEDIADVDRAM = 61,        // DVD-RAM Media

    SIID_MEDIADVDRW = 62,         // DVD-RW Media

    SIID_MEDIADVDR = 63,          // DVD-R Media

    SIID_MEDIADVDROM = 64,        // DVD-ROM Media

    SIID_MEDIACDAUDIOPLUS = 65,   // CD+ (Enhanced CD) Media

    SIID_MEDIACDRW = 66,          // CD-RW Media

    SIID_MEDIACDR = 67,           // CD-R Media

    SIID_MEDIACDBURN = 68,        // Burning CD

    SIID_MEDIABLANKCD = 69,       // Blank CD Media

    SIID_MEDIACDROM = 70,         // CD-ROM Media

    SIID_AUDIOFILES = 71,         // Audio files

    SIID_IMAGEFILES = 72,         // Image files

    SIID_VIDEOFILES = 73,         // Video files

    SIID_MIXEDFILES = 74,         // Mixed files

    SIID_FOLDERBACK = 75,         // Folder back

    SIID_FOLDERFRONT = 76,        // Folder front

    SIID_SHIELD = 77,             // Security shield. Use for UAC prompts only.

    SIID_WARNING = 78,            // Warning

    SIID_INFO = 79,               // Informational

    SIID_ERROR = 80,              // Error

    SIID_KEY = 81,                // Key / Secure

    SIID_SOFTWARE = 82,           // Software

    SIID_RENAME = 83,             // Rename

    SIID_DELETE = 84,             // Delete

    SIID_MEDIAAUDIODVD = 85,      // Audio DVD Media

    SIID_MEDIAMOVIEDVD = 86,      // Movie DVD Media

    SIID_MEDIAENHANCEDCD = 87,    // Enhanced CD Media

    SIID_MEDIAENHANCEDDVD = 88,   // Enhanced DVD Media

    SIID_MEDIAHDDVD = 89,         // HD-DVD Media

    SIID_MEDIABLURAY = 90,        // BluRay Media

    SIID_MEDIAVCD = 91,           // VCD Media

    SIID_MEDIADVDPLUSR = 92,      // DVD+R Media

    SIID_MEDIADVDPLUSRW = 93,     // DVD+RW Media

    SIID_DESKTOPPC = 94,          // desktop computer

    SIID_MOBILEPC = 95,           // mobile computer (laptop/notebook)

    SIID_USERS = 96,              // users

    SIID_MEDIASMARTMEDIA = 97,    // Smart Media

    SIID_MEDIACOMPACTFLASH = 98,  // Compact Flash

    SIID_DEVICECELLPHONE = 99,    // Cell phone

    SIID_DEVICECAMERA = 100,      // Camera

    SIID_DEVICEVIDEOCAMERA = 101, // Video camera

    SIID_DEVICEAUDIOPLAYER = 102, // Audio player

    SIID_NETWORKCONNECT = 103,    // Connect to network

    SIID_INTERNET = 104,          // Internet

    SIID_ZIPFILE = 105,           // ZIP file

    SIID_SETTINGS = 106,          // Settings

    SIID_MAX_ICONS = 107,

} FINAL_SHSTOCKICONID;

 

public enum class StockIconIdentifier {

   DocumentNotAssociated = SIID_DOCNOASSOC,

   DocumentAssociated = SIID_DOCASSOC,

   Application = SIID_APPLICATION,

   Folder = SIID_FOLDER,

   FolderOpen = SIID_FOLDEROPEN,

   Drive525 = SIID_DRIVE525,

   Drive35 = SIID_DRIVE35,

   DriveRemove = SIID_DRIVEREMOVE,

   DriveFixed = SIID_DRIVEFIXED,

   DriveNet = SIID_DRIVENET,

   DriveNetDisabled = SIID_DRIVENETDISABLED,

   DriveCD = SIID_DRIVECD,

   DriveRAM = SIID_DRIVERAM,

   World = SIID_WORLD,

   Server = SIID_SERVER,

   Printer = SIID_PRINTER,

   MyNetwork = SIID_MYNETWORK,

   Find = SIID_FIND,

   Help = SIID_HELP,

   Share = SIID_SHARE,

   Link = SIID_LINK,

   SlowFile = SIID_SLOWFILE,

   Recycler = SIID_RECYCLER,

   RecyclerFull = SIID_RECYCLERFULL,

   MediaCDAudio = SIID_MEDIACDAUDIO,

   Lock = SIID_LOCK,

   AutoList = SIID_AUTOLIST,

   PrinterNet = SIID_PRINTERNET,

   ServerShare = SIID_SERVERSHARE,

   PrinterFax = SIID_PRINTERFAX,

   PrinterFaxNet = SIID_PRINTERFAXNET,

   PrinterFile = SIID_PRINTERFILE,

   Stack = SIID_STACK,

   MediaSvcd = SIID_MEDIASVCD,

   StuffedFolder = SIID_STUFFEDFOLDER,

   DriveUnknown = SIID_DRIVEUNKNOWN,

   DriveDvd = SIID_DRIVEDVD,

   MediaDvd = SIID_MEDIADVD,

   MediaDvdRam = SIID_MEDIADVDRAM,

   MediaDvdRW = SIID_MEDIADVDRW,

   MediaDvdR = SIID_MEDIADVDR,

   MediaDvdRom = SIID_MEDIADVDROM,

   MediaCDAudioPlus = SIID_MEDIACDAUDIOPLUS,

   MediaCDRW = SIID_MEDIACDRW,

   MediaCDR = SIID_MEDIACDR,

   MediaCDBurn = SIID_MEDIACDBURN,

   MediaBlankCD = SIID_MEDIABLANKCD,

   MediaCDRom = SIID_MEDIACDROM,

   AudioFiles = SIID_AUDIOFILES,

   ImageFiles = SIID_IMAGEFILES,

   VideoFiles = SIID_VIDEOFILES,

   MixedFiles = SIID_MIXEDFILES,

   FolderBack = SIID_FOLDERBACK,

   FolderFront = SIID_FOLDERFRONT,

   Shield = SIID_SHIELD,

   Warning = SIID_WARNING,

   Info = SIID_INFO,

   Error = SIID_ERROR,

   Key = SIID_KEY,

   Software = SIID_SOFTWARE,

   Rename = SIID_RENAME,

   Delete = SIID_DELETE,

   MediaAudioDvd= SIID_MEDIAAUDIODVD,

   MediaMovieDvd = SIID_MEDIAMOVIEDVD,

   MediaEnhancedCD = SIID_MEDIAENHANCEDCD,

   MediaEnhancedDvd = SIID_MEDIAENHANCEDDVD,

   MediaHDDvd = SIID_MEDIAHDDVD,

   MediaBluRay = SIID_MEDIABLURAY,

   MediaVcd = SIID_MEDIAVCD,

   MediaDvdPlusR = SIID_MEDIADVDPLUSR,

   MediaDvdPlusRW = SIID_MEDIADVDPLUSRW,

   DesktopPC = SIID_DESKTOPPC,

   MobilePC = SIID_MOBILEPC,

   USERS = SIID_USERS,

   MediaSmartMedia = SIID_MEDIASMARTMEDIA,

   MediaCompactFlash = SIID_MEDIACOMPACTFLASH,

   DeviceCellPhone = SIID_DEVICECELLPHONE,

   DeviceCamera = SIID_DEVICECAMERA,

   DeviceVideoCamera = SIID_DEVICEVIDEOCAMERA,

   DeviceAudioPlayer = SIID_DEVICEAUDIOPLAYER,

   NetworkConnect = SIID_NETWORKCONNECT,

   Internet = SIID_INTERNET,

   ZipFile = SIID_ZIPFILE,

   Settings = SIID_SETTINGS,

};

 

public ref class StockIcons {

   public:

      static Icon ^ GetIcon(StockIconIdentifier identifier) { return GetIcon(identifier, static_cast<StockIconFlag>(0)); }

 

      static Icon ^ GetIcon(StockIconIdentifier identifier, StockIconFlag flags) {

         flags = flags | StockIconFlag::Handle;

         SHSTOCKICONINFO stockIconInfo = {0};

         stockIconInfo.cbSize = sizeof(stockIconInfo);

         HRESULT hResult = SHGetStockIconInfo(static_cast<SHSTOCKICONID>(identifier), static_cast<UINT>(flags), & stockIconInfo);

         if FAILED(hResult)

            throw gcnew Runtime::InteropServices::COMException("SHGetStockIconInfo execution failure", hResult);

         return Icon::FromHandle(static_cast<IntPtr>(stockIconInfo.hIcon));

      }

};

 

} }