Estou desenvolvendo, a título de estudo, um programa para capturar
telas;total,janela ativa e recorte.Só que é mais difícil do que imaginava.
As próximas perguntas, como esta, que postarei aqui no forum, dirão respeito
a isto.
Espero poder contar com a ajuda do forum para desenvolver este estudo.
Consegui a seguinte função para capturar o desktop:
procedure TForm1.ScreenCapture(Filename: TFilename);
var
DHDC: HDC;
Buffer : TBitmap;
Begin
begin
DHDC := GetWindowDC(GetDesktopWindow);
Buffer := tBitmap.Create;
Buffer.Width := Screen.Width;
Buffer.Height := Screen.Height;
BitBlt(Buffer.Canvas.Handle,0,0,Screen.Width,Screen.Height,DHDC,0,0,SRCCOPY);
Buffer.SaveToFile(Filename);
Buffer.Free;
ReleaseDC(GetDesktopWindow,DHDC);
end;
End;
Gostaria de criar o bitmap(com o nome flash01.bmp) relativo a esta captura num caminho determinado, por exemplo C:\temp e exibí-lo num image.
Como poderia fazer isto com função acima?
Mesmo alterando FileName:String e colocando 'C:\temp'na chamada da função dá erro.
Uma outra função que peguei por aí é a seguinte:
function CaptureScreenRect( ARect: TRect ): TBitmap;
//
// Captura a tela e salva-a em um Bitmap
//
// Use-a assim:
//
// Image1.picture.Assign(CaptureScreenRect(Rect(0,0,Width,Height)));
//
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;
// Palette := GetSystemPalette;
end;
end;
Usando Image1.picture.Assign(CaptureScreenRect(Rect(0,0,Width,Height)));
consigo colocar o desktop na image1, porém não consigo salvar
image1.Picture.SaveToFile('C:\temp');dá erro.
O erro que aparece é o mesmo que aparece com o uso da procedure anteriormente citada:
Não é possível criar o arquivo C:\temp, o acesso está negado
Em resumo preciso do seguinte:
1) Capturar o desktop
2) Exibir num image
3) Salvar o desktop, num bitmap de nome Flash01.bmp, num diretório
pré determinado, por exemplo C:\temp
Dá para adaptar a procedure ou a função para fazer isto que preciso?
O código abaixo também salva o desktop
keybd_event(vk_snapshot,0, 0, 0); {Tela toda.}
porém como pegar a tela toda salvar num arquivo .bmp e ainda
Pergunta
Paulo Nobre
Estou desenvolvendo, a título de estudo, um programa para capturar
telas;total,janela ativa e recorte.Só que é mais difícil do que imaginava.
As próximas perguntas, como esta, que postarei aqui no forum, dirão respeito
a isto.
Espero poder contar com a ajuda do forum para desenvolver este estudo.
Consegui a seguinte função para capturar o desktop:
Gostaria de criar o bitmap(com o nome flash01.bmp) relativo a esta captura num caminho determinado, por exemplo C:\temp e exibí-lo num image. Como poderia fazer isto com função acima? Mesmo alterando FileName:String e colocando 'C:\temp'na chamada da função dá erro. Uma outra função que peguei por aí é a seguinte: Usando Image1.picture.Assign(CaptureScreenRect(Rect(0,0,Width,Height))); consigo colocar o desktop na image1, porém não consigo salvar image1.Picture.SaveToFile('C:\temp');dá erro. O erro que aparece é o mesmo que aparece com o uso da procedure anteriormente citada: Não é possível criar o arquivo C:\temp, o acesso está negado Em resumo preciso do seguinte: 1) Capturar o desktop 2) Exibir num image 3) Salvar o desktop, num bitmap de nome Flash01.bmp, num diretório pré determinado, por exemplo C:\temp Dá para adaptar a procedure ou a função para fazer isto que preciso? O código abaixo também salva o desktopporém como pegar a tela toda salvar num arquivo .bmp e ainda
salvar este arquivo no C:\temp, por exemplo.
HELP,HELP,HELP.
Link para o comentário
Compartilhar em outros sites
16 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.