API - copiando arquivos para area de transferencia

Top  Previous  Next

//Copiando arquivos para a área de transferência do windows

 

 

 

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('Não pode alocar na memória.');

  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);

{

 use  #0 para separar os arquivos.

}

 

 

begin

  CopyFilesToClipboard('C:\Bootlog.txt'#0'C:\AutoExec.Bat');

end;

 

.