Vilarejo PK2P
Bem-vindo ao fórum Vilarejo PK2P! O fórum oficial do canal Press Key to Play do Youtube!

Participe do fórum, é rápido e fácil

Vilarejo PK2P
Bem-vindo ao fórum Vilarejo PK2P! O fórum oficial do canal Press Key to Play do Youtube!
Vilarejo PK2P
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Grupo para reunir as pessoas que acompanham os vídeos no canal Press Key to Play e discutir os assuntos abrangidos pelo Blog PK2P.

Últimos assuntos

» RPG de Mesa: A fronteira Volume 4: O Castelo Owlrick. (D&D5e)
por Ariano 10/12/2020, 23:18

» [tutorial] hash em C/C++ com openssl
por kodo no kami 21/9/2020, 13:37

» ping lista grafico
por kodo no kami 24/7/2020, 07:53

» [Discord] Campanha de RPG D-cyber
por Jonatan15 17/7/2020, 11:11

» [tradução] 1869 (msdos)
por kodo no kami 26/6/2020, 13:43

» [source] exemplo filtro mediano
por kodo no kami 1/6/2020, 00:24

» [tutorial] criar filtro nas imagens (python)
por kodo no kami 22/5/2020, 19:29

» Wireless IDS Sagemcom
por kodo no kami 22/4/2020, 23:50

» [source] detectar dispositivos no wifi (sagemcom)
por kodo no kami 9/3/2020, 20:25

» [tutorial] wla assemblador (65xx, 68xx, z80, 8008, 8080 e huc6280)
por kodo no kami 2/2/2020, 16:42


Você não está conectado. Conecte-se ou registre-se

[tutorial] captura de tela em delphi (screenshot)

Ir para baixo  Mensagem [Página 1 de 1]

kodo no kami

kodo no kami

E ae galera blz? Nesse tutorial básico vamos esta aprendendo tirar um screenshot com Delphi usando as API do próprio sistema Windows e algumas funções do Delphi. Para começar sem muita enrolação abrimos o Delphi (no meu caso vou esta utilizando o saudoso Delphi 7)

[tutorial] captura de tela em delphi (screenshot) 0MWEhqf

nele vou esta colocando dois componentes, o primeiro será um botão da aba "standard" (também mudei o texto nesse botão, colocando "diga X" kkk), o segundo será um componente Image da aba "Additional"

[tutorial] captura de tela em delphi (screenshot) MmaleJU

no evento onclick do botão a gente vai escrever o nosso código que vai está capturando o desktop (no caso o nosso printscreen). Para que isso seja possível temos que capturar o handle da janela do desktop, para fazer isso usamos a API GetDesktopWindow e armazenamos o retorno dela em uma variavel do tipo HWND

Código:
procedure TForm1.Button1Click(Sender: TObject);
var janela: HWND;
begin
  janela := GetDesktopWindow();
end;

o segundo passo que vamos fazer é instanciar um objeto do tipo TBitmap que será usado para manipular   o Desktop como imagem

Código:
procedure TForm1.Button1Click(Sender: TObject);
var janela: HWND;
 janelaDC: TBitmap;
begin
  janela := GetDesktopWindow();
  janelaDC := TBitmap.Create;
end;

temos também que especificar o tamanho exato do desktop, para fazer isso temos que atribuir esses valores nos atributos width e height do TBitmap (uma forma para descobrir o tamanho da tela é usando o atributo Screen.Width e Screen.Height)

Código:
procedure TForm1.Button1Click(Sender: TObject);
var janela: HWND;
 janelaDC: TBitmap;
begin
  janela := GetDesktopWindow();
  janelaDC := TBitmap.Create;
  janelaDC.Width := Screen.Width;
  janelaDC.Height := Screen.Height;
end;

agora pegamos o contexto daquela janela usando a função GetDC, passamos como argumento o handle da janela (no caso a variável do desktop), também atribuímos ela para o atributo Canvas.handle do nosso objeto TBitmap

Código:
procedure TForm1.Button1Click(Sender: TObject);
var janela: HWND;
 janelaDC: TBitmap;
begin
  janela := GetDesktopWindow();
  janelaDC := TBitmap.Create;
  janelaDC.Width := Screen.Width;
  janelaDC.Height := Screen.Height;
  janelaDC.Canvas.Handle := GetDC(janela);
end;

por fim basta a gente copiar cada pixel do nosso objeto TBitmap para o objeto do componente image. Para isso usamos o método Canvas.CopyRect no componente image, nesse metodo temos que especificar o tamanho da dimensão do destino no caso a largura e altura do componente image (usamos o Rect para isso), o segundo argumento seria canvas do objeto que vamos copiar (objeto do TBitmap), e o ultimo argumento seria a dimensão da fonte no caso o objeto do TBitmap (tambem usamos o Rect), podemos tambem tentar outras dimensão para capturar uma area especifica ou ate uma janela especifica

Código:
procedure TForm1.Button1Click(Sender: TObject);
var janela: HWND;
 janelaDC: TBitmap;
begin
  janela := GetDesktopWindow();
  janelaDC := TBitmap.Create;
  janelaDC.Width := Screen.Width;
  janelaDC.Height := Screen.Height;
  janelaDC.Canvas.Handle := GetDC(janela);
  
  Image1.Canvas.CopyRect(Rect(0,0,Image1.Width,Image1.Height), janelaDC.Canvas, Rect(0,0,Screen.Width,Screen.Height));
end;

[tutorial] captura de tela em delphi (screenshot) KLcpgRc

nosso programa esta pronto bastando salvar, compilar e executar

[tutorial] captura de tela em delphi (screenshot) XQSTFKN

se a gente apertar naquele botão ele vai capturar a tela

[tutorial] captura de tela em delphi (screenshot) WI5zr8K

bom galera existem muitas coisas que seria possível desenvolver com base nesse codigo, vocês podem criar um screenlogger, um programa para capturar stream da tela em tempo real, um programa para screenshot customizado entre muitas outras coisas. E arigatou ai para a galera, tamos ai minna-san ate a proxima \o

by kodo no kami

https://eofclub.in/forum

Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos