uses
ActiveX;
procedure TForm1.Button1Click(Sender: TObject);
var
S: string;
FormatEtc: TFormatEtc;
DataObject: IDataObject;
EnumFormatEtc: IEnumFormatEtc;
begin
S := '';
if Succeeded(OleGetClipboard(DataObject)) then
begin
if Succeeded(DataObject.EnumFormatEtc(DATADIR_GET, EnumFormatEtc)) then
while EnumFormatEtc.Next(1, FormatEtc, nil) = S_OK do
S := S + IntToStr(FormatEtc.cfFormat) + sLineBreak;
ShowMessage(S);
end;
end;