標準で(ある程度)サポートされている回答の1つは、Microsoft.VisualBasic.CompatibilityアセンブリのSupport.IconToIPictureを使用することでした。ただし、.NET 4.0では、「このAPIは廃止されました」。
はい、そこにはさまざまな解決策がありますが、Microsoftがこの方法を廃止した場合、別の「サポートされた」代替手段があると思います。
IPictureはOLEインターフェイスであるため、このAPIは廃止されたと思います。それを使用することで、Microsoftが望んでいない管理されていない世界に飛び込むことができます。を呼び出すことで動作を再現できます
IntPtr aHIcon = Icon.GetHicnFromIcon(yourIcon);
次に、このハンドルをOleCreatePictureIndirectに渡す必要があります(コードはC ++です)。
PICTDESC aDesc;
aDesc.cbSizeofstruct = sizeof PICTDESC;
aDesc.picType = PICTYPE_ICON;
aDesc.icon.icon = aHIcon;
IPicture * aPict = 0;
OleCreatePictureIndirect(&aDesc, __uuidof(IPicture), TRUE, (void **) &aPict);
唯一の難しさ-C++構造と関数呼び出しをラップするためのCOM相互運用コードを提供する必要があります。