Segue função que fiz para salvar tela qdo der erro no sistema (tem umas 
variaveis de uso meu aí no meio,
mas substitua pelos caminho da imagem, etc)



procedure TfAdm001.SalvaImagemErro(pMensagem : String);
    //Função que captura tela
    function CaptureScreenRect( ARect: TRect ): TBitmap;
    var
      ScreenDC: HDC;
    begin
    Result := TBitmap.Create;
      with Result, ARect do
      begin
        Width := Right - Left;
        Height := Bottom - Top;
        ScreenDC := GetDC( 0 );
        try
          BitBlt( Canvas.Handle, 0, 0, Width, Height, ScreenDC, Left, Top, 
SRCCOPY );
        finally
          ReleaseDC( 0, ScreenDC );
        end;
      end;
    end;

const
  cPastaErros = 'C:\Administrativo\Imagens\Erros\';
Var BitMap : TBitmap;
    JPeg: TJPegImage;
    zNomeArq : String;
    zArqTXT : TStringList;
Begin
  try
    if not DirectoryExists(cPastaErros) then
       ForceDirectories(cPastaErros);
  except
    exit;
  end;

  zNomeArq := FormatDateTime('yyyyMMddhhnnsszzz', now);

  //Criando o Componente TBitmap
  BitMap := TBitmap.Create;
  //Capturando a Tela do PC
  BitMap := CaptureScreenRect(Bounds(0,0,Screen.Width,Screen.Height));
  //Salvando a imagem capturada no PC, note que o arquivo
  //serah salvo em c\: com o nome HMG.BMP
//  BitMap.SaveToFile(ExtractFilePath('c:\')+'HMG.bmp') ;
  //Convertendo o aurquio HMG.BMP em HMG.JPG
  try
      BitMap.SaveToFile(cPastaErros + zNomeArq + '.bmp') ;
//      BitMap.LoadFromFile(cPastaErros + zNomeArq + '.jpg');
      JPeg := TJPegImage.Create;
      try
        JPeg.CompressionQuality := 30; { Aqui coloquei que o arq deve ter uma  
Qualidade de  10% }
        JPeg.Assign(BitMap);
        //Convertendo em JPG
//        JPeg.SaveToFile(ChangeFileExt('c:\HMG', '.jpg'));
        JPeg.SaveToFile(cPastaErros + zNomeArq + '.jpg');
      finally
        JPeg.Free;
        //******* salva mensagem erro em txt pq no momento que salva jpg ja deu 
ok na msg **
        try
          zArqTXT := TStringList.Create;
          zArqTXT.Add(pMensagem);
          zArqTXT.SaveToFile(cPastaErros + zNomeArq + '.txt');
        finally
          zArqTXT.Free;
        end;  
        //*******************************************************************
      end;
    finally
      BitMap.Free;
      if FileExists(cPastaErros + zNomeArq + '.bmp') then //exclui o BMP, deixa 
só o JPG
         DeleteFile(cPastaErros + zNomeArq + '.bmp');
   end;
end;

  ----- Original Message ----- 
  From: pcinfowave 
  To: [email protected] 
  Sent: Thursday, March 15, 2007 12:33 PM
  Subject: [delphi-br] Gerar arquivo JPEG


  Ola, gostaria da ajuda para criar um procedimento q gera uma imagem JPG 
  de uma tela, tipo o PrintScreen
  porem q já salve o arquivo na area de trabalho, para que meu usuario 
  possa me enviar esta tela por msn por exemplo.

  É que os usuarios nao tem muito conhecimento sobre o micro, daí quero 
  facilitar para eles.

  Se alguem puder ajudar, agradeço!

  []´s
  paulo



   

[As partes desta mensagem que não continham texto foram removidas]

Responder a