Subir captura de pantalla a un ftp

El siguiente código muestra como capturar la pantalla y guardar la imagen en un archivo jpeg, que luego subimos a un servidor ftp. Para subir el archivo utilizamos WinInet.

uses Windows, SysUtils, Classes, Graphics, Jpeg, WinInet;
 
function UploadScreen(Server: string; Port: Word; Username, Password: PChar): Boolean;
var
  hNet: HINTERNET;
  hCon: HINTERNET;
  hFile: HINTERNET;
  Context: DWORD;
  Bmp: Tbitmap;
  Jpg: TJPEGImage;
  Mem: TMemoryStream;
  Escritos: Cardinal;
begin
  Result := FALSE;
  Context:= 0;
  hNet := InternetOpen('agent', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  if (hNet <> nil) then
  begin
    hCon:= InternetConnect(hNet,PChar(Server),Port,Username,Password,
      INTERNET_SERVICE_FTP,0,Context);
    if (hCon <> nil) then
    begin
      hFile:= FtpOpenFile(hCon,PChar(FormatDateTime('ddmmyyhhnnss',Now)+'.jpg'),GENERIC_WRITE,
        FTP_TRANSFER_TYPE_BINARY,Context);
      if (hFile <> nil) then
      begin
        Bmp:= Tbitmap.Create;
        Jpg:= TJPEGImage.Create;
        Mem:= TMemoryStream.Create;
        try
          try
            bmp.Width:= GetSystemMetrics(SM_CXSCREEN);
            bmp.Height:= GetSystemMetrics(SM_CYSCREEN);
            BitBlt(bmp.Canvas.Handle,0,0,bmp.Width,bmp.Height,GetDc(0),0,0,SRCCOPY);
            jpg.Assign(bmp);
            jpg.CompressionQuality:= 60;
            jpg.Compress;
            jpg.SaveToStream(Mem);
            if InternetWriteFile(hFile,Mem.Memory,Mem.Size,Escritos) then
              Result:= Mem.Size = Escritos
            else
              Result:= FALSE;
          except end;
        finally
          Mem.Free;
          Bmp.free;
          Jpg.free;
        end;
        InternetCloseHandle(hFile);
      end;
      InternetCloseHandle(hCon);
    end;
    InternetCloseHandle(hNet);
  end;
end;
 
 
//Un ejemplo de como usar la funcion anterior
var
  Usuario: string;
  Password: string;
begin
  Usuario:= 'Miron';
  Password:= '';
  UploadScreen('127.0.0.1',21,PChar(Usuario),PChar(Password));
end;