Содержание материала

Из рассылки "Мастера DELPHI. Новости мира компонент,..."

Code:

var FS:TFileStream;

procedure TForm1.bClearClick(Sender: TObject);

begin

OpenClipBoard(0);

EmptyClipboard;

CloseClipBoard;

end;

 

procedure TForm1.BSaveClick(Sender: TObject);

var CBF:Cardinal;

CBFList:TList;

i:Integer;

h:THandle;

p:Pointer;

CBBlockLength,Temp:Cardinal;

FS:TFileStream;

begin

if OpenClipBoard(0)then begin

CBFList:=TList.Create;

CBF:=0;

repeat

CBF:=EnumClipboardFormats(CBF);

if CBF<>0 then

CBFList.Add(pointer(CBF));

until CBF=0;

edit1.text:=IntToStr(CBFList.Count);

if CBFList.Count>0 then begin

FS:=TFileStream.Create('e:\cp.dat',fmCreate);

Temp:=CBFList.Count;

FS.Write(Temp,SizeOf(Integer));

for i:=0 to CBFList.Count-1 do begin

h:=GetClipboardData(Cardinal(CBFList[i]));

if h>0 then begin

CBBlockLength:=GlobalSize(h);

if h>0 then begin

p:=GlobalLock(h);

if p <> nil then begin

Temp:=Cardinal(CBFList[i]);

FS.Write(Temp,SizeOf(Cardinal));

FS.Write(CBBlockLength,SizeOf(Cardinal));

FS.Write(p^,CBBlockLength);

end;

GlobalUnlock(h);

end;

end;

end;

FS.Free;

end;

CBFList.Free;

CloseClipBoard;

end;

end;

 

procedure TForm1.bLoadClick(Sender: TObject);

var h:THandle;

p:Pointer;

CBF:Cardin!

al;

CBBlockLength:Cardinal;

i,CBCount:Integer;

FS:TFileStream;

begin

if OpenClipBoard(0)then begin

FS:=TFileStream.Create('e:\cp.dat',fmOpenRead);

if FS.Size=0 then Exit;

FS.Read(CBCount,sizeOf(Integer));

if CBCount=0 then Exit;

for i:=1 to CBCount do begin

FS.Read(CBF,SizeOf(Cardinal));

FS.Read(CBBlockLength,SizeOf(Cardinal));

h:=GlobalAlloc(GMEM_MOVEABLE or GMEM_SHARE or GMEM_ZEROINIT,CBBlockLength);

if h>0 then begin

p:=GlobalLock(h);

if p=nil then

GlobalFree(h)

else begin

FS.Read(p^,CBBlockLength);

GlobalUnlock(h);

SetClipboardData(CBF,h);

end;

end;

end;

FS.Free;

CloseClipBoard;

end;

end;

 

 

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить