public static void SetClipboardImage(Bitmap image) { using (MemoryStream pngMemStream = new MemoryStream()) { image.Save(pngMemStream, ImageFormat.Png); uint id = ClipboardApi.RegisterClipboardFormatW("PNG"); List <ClipboardEntry> entries = new List <ClipboardEntry>(); entries.Add(CreateDIBV5Image(image)); entries.Add(new ClipboardEntry(id, pngMemStream.ToArray())); entries.Add(CreateDIBImage(image)); SetClipboard(entries); } }
public static bool SetClipboard(ClipboardEntry entry) { if (!ClipboardApi.OpenClipboard(IntPtr.Zero) || !ClipboardApi.EmptyClipboard()) { return(false); } IntPtr handle = Marshal.AllocHGlobal(entry.data.Length); Marshal.Copy(entry.data, 0, handle, entry.data.Length); if (!ClipboardApi.SetClipboardData(entry.id, handle)) { Marshal.FreeHGlobal(handle); return(false); } ClipboardApi.CloseClipboard(); return(true); }