Formatcount vs ile yapılan örnekler var.
Ancak örneklerin hepsinde ilk bulunan resim alınmış diğerleri ise boşlanmış.
Benim yapmak istediğim şu.
Web sayfasını seçip kopyaladağımız zaman haliyle
Clipboarda biçimlendirilmiş metinler, jpgler, pngler vs.. çeşitli biçemde veri yığınları gelmiş olacak.
Şimdi bunlar for i := 0 to Clipboard.Formatcount ile kaç tane olduğu, hangi formatta (1)(metafile,graphic,bitmap,text ...)
olduğu görülebiliyor. Fakat doğrudan (items gibi) alınamıyor, Handle,Pointer ve Stream gerekiyor. (2)
Bu da güzel.
ama tüm nesneleri tarayıp onları nasıl alacağımı bulamadım.
Bu konu hakkında yardımcı olabilir misiniz?.
_______________________________________________________
1:
Kod: Tümünü seç
case cpType of
1: Result := 'CF_TEXT';
2: Result := 'CF_BITMAP';
3: Result := 'CF_METAFILEPICT';
4: Result := 'CF_SYLK';
5: Result := 'CF_DIF';
6: Result := 'CF_TIFF';
7: Result := 'CF_OEMTEXT';
8: Result := 'CF_DIB';
9: Result := 'CF_PALETTE';
10: Result := 'CF_PENDATA';
11: Result := 'CF_RIFF';
12: Result := 'CF_WAVE';
13: Result := 'CF_UNICODETEXT';
14: Result := 'CF_ENHMETAFILE';
15: Result := 'CF_HDROP (Win 95)';
16: Result := 'CF_LOCALE (Win 95)';
17: Result := 'CF_MAX (Win 95)';
$0080: Result := 'CF_OWNERDISPLAY';
$0081: Result := 'CF_DSPTEXT';
$0082: Result := 'CF_DSPBITMAP';
$0083: Result := 'CF_DSPMETAFILEPICT';
$008E: Result := 'CF_DSPENHMETAFILE';
$0200..$02FF: Result := 'private format';
$0300..$03FF: Result := 'GDI object';
else
Result:='Unknown Format:'+inttostr(cpType);
Kod: Tümünü seç
var
Data:THandle;
DataPtr:Pointer;
Reader:Treader;
begin
ClipBoard.Open;
try
Data:=GetClipBoardData(cpType);
if Data<>0 then
Begin
DataPtr :=GlobalLock(Data);
if DataPtr<>nil then
Begin
try
Result.WriteBuffer(DataPtr^,Globalsize(Data));
finally
GlobalUnlock(Data);
end;
End;
End;
finally
ClipBoard.Close;
end;