EnumClipboardFormats (user32)
Last changed: -84.245.88.216

.
Summary

C# Signature:

[DllImport("user32.dll")]
static extern uint EnumClipboardFormats(uint format);

User-Defined Types:

None.

Notes:

None.

Tips & Tricks:

Please add some!

Sample Code:

//Displays the id and name of the all the different data formats currently in the clipboard.
//Create a project called ClipBoardTest, a form called Form1 and add two buttons (button1, button2) and two listboxes (listbox1, listbox2).
//Clicking button1 will copy the id and name of all the clipboard formats in the clipboard to listbox1.
//Clicking button2 will copy everything from listbox1 to listbox2. This is useful if you want to
//compare the clipboard formats used by two different applications.

using System;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace ClipBoardTest
{
    public partial class Form1 : Form
    {
    [DllImport("user32.dll")]
    static extern uint EnumClipboardFormats(uint format);

    [DllImport("user32.dll")]
    static extern bool OpenClipboard(IntPtr hWndNewOwner);

    [DllImport("user32.dll")]
    static extern bool CloseClipboard();

    [DllImport("user32.dll")]
    static extern int GetClipboardFormatName(uint format, [Out] StringBuilder lpszFormatName, int cchMaxCount);

    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        OpenClipboard(Handle);

        listBox1.Items.Clear();

        uint LastRetrievedFormat = 0;
        while (0 != (LastRetrievedFormat = EnumClipboardFormats(LastRetrievedFormat)))
        {
        String Description = "[" + LastRetrievedFormat.ToString() + "] \t" + GetClipboardFormatName(LastRetrievedFormat);
        listBox1.Items.Add(Description);
        }

        CloseClipboard();
    }

    private String GetClipboardFormatName(uint ClipboardFormat)
    {
        StringBuilder sb = new StringBuilder();
        GetClipboardFormatName(ClipboardFormat, sb, 1000);
        return sb.ToString();
    }

    private void button2_Click(object sender, EventArgs e)
    {
        listBox2.Items.Clear();

        foreach (var Item in listBox1.Items)
        {
        listBox2.Items.Add(Item);
        }
    }
    }
}

Alternative Managed API:

Do you know one? Please contribute it!

Documentation