Как скопировать файлы в буфер обмена?
uses
..., ShlObj, ClipBrd;
procedure CopyFilesToClipboard( FileList: string );
var
DropFiles: PDropFiles;
hGlobal: THandle;
iLen: Integer;
begin
iLen := Length( FileList ) + 2;
FileList := FileList + #0#0;
hGlobal := GlobalAlloc( GMEM_SHARE or GMEM_MOVEABLE or GMEM_ZEROINIT, SizeOf( TDropFiles ) + iLen );
if ( hGlobal = 0 ) then raise Exception.Create( 'Could not allocate memory.' );
begin
DropFiles := GlobalLock( hGlobal );
DropFiles^.pFiles := SizeOf( TDropFiles );
Move( FileList[1], ( PChar( DropFiles ) + SizeOf( TDropFiles ) )^, iLen );
GlobalUnlock( hGlobal);
Clipboard.SetAsHandle( CF_HDROP, hGlobal );
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
CopyFilesToClipboard( 'C:\boot.ini'#0'C:\autoexec.bat' );
end; |
Файлы должны разделяться про помощи #0.