Ir para conteúdo
Fórum Script Brasil
  • 0

Captura de Tela


JGS

Pergunta

Ola, Boa tarde a todos.

Estou escrevendo um codigo em Delphi7 para captura de tela(desktop), so que ate agora so consegui capturar por tamanho e na verdade eu estava querendo era capturar uma area qualquer.

Sera que alguen poderia me ajudar.

Link para o comentário
Compartilhar em outros sites

14 respostass a esta questão

Posts Recomendados

  • 0
Estou escrevendo um codigo em Delphi7 para captura de tela(desktop), so que ate agora so consegui capturar por tamanho e na verdade eu estava querendo era capturar uma area qualquer.
JGS, dê uma olhada neste tópico: Keybd_event(vk_snapshot,0, 0, 0);, Como incluir a seta do mouse na captura (do começo ao fim)

O colega Paulo Nobre expos nele o código que você poderá usar.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Eu dei uma olhada no que foi feito anteriormente pelo nossos colegas, o que eu tenho em mente e

mais ou menos como e feito pelo programa 'softcam' da Luminositi, so que bem mais simples, na verdade acho que seria dois forms

um principal e outro que seria como se fosse um painel furado no meio tipo uma moldura que eu pudese arrastar e dimensionar da forma que eu quise-se em cima da regiao onde eu queira capturar e pemanece-se la tirando foto 1 em 1 segundos(variavel) , essa foto seria armazenada em alguma pasta.

não sei se isso e possivel

Link para o comentário
Compartilhar em outros sites

  • 0
e copiei o codigo para testar, mais não estou conguindo compilar, me retorna um erro em 'IViewObject'

sera que faltou alguma coisa em 'uses'.

JGS, acho que o Jhonas quiz que você observasse no help que esta interface está declarada na unit ActiveX - inclua ela na cláusula uses.

Obs: Não diga que "retorna um erro em ...", Informe qual o erro especificamente, aquele que o compilador lhe mostra - fica mais fácil de ajudar. ;)

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Bom a principio não tinha entendido mesmo de que se tratava de falta de componente mais já esta declarada, agora surgiu outros na sequencia que e o seguinte:

[Error] Unit1.pas(34): Undeclared identifier: 'Document'

[Error] Unit1.pas(34): Operator not applicable to this operand type

[Error] Unit1.pas(36): Undeclared identifier: 'Document'

[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'

Link para o comentário
Compartilhar em outros sites

  • 0

Bom a principio não tinha entendido mesmo de que se tratava de falta de componente mais já esta declarada, agora surgiu outros na sequencia que e o seguinte:

[Error]Unit1.pas(34): Undeclared identifier: 'Document'

[Error] Unit1.pas(34): Operator not applicable to this operand type

[Error] Unit1.pas(36): Undeclared identifier: 'Document'

[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'

Pelo visto voce é novato no delphi... segue o código completo

os erros acima são em função da não declaração do componente WebBrowser

wb: TWebBrowser;

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, OleCtnrs, OleCtrls, ExtCtrls, SHDocVw;

type
  TForm1 = class(TForm)
    Button1: TButton;
    wb: TWebBrowser;
    Image1: TImage;
    SaveDialog1: TSaveDialog;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

uses activex, jpeg;

procedure TForm1.Button1Click(Sender: TObject);
var
  viewObject : IViewObject;
  r : TRect;
  bitmapdst, bitmap : TBitmap;
  RectOrigem, RectDestino: TRect;
  BitmapFont, BitmapDest, MyBMPImage: TBitmap;
begin
  if wb.Document <> nil then
  begin
    wb.Document.QueryInterface(IViewObject, viewObject);
    if Assigned(viewObject) then
    try
      bitmap    := TBitmap.Create;
      bitmapdst := TBitmap.Create;
      try

        bitmap.Height := wb.Height; // 288; // 322wb.Height;
        bitmap.Width  := wb.Width; // 322; // wb.Width;

        r  := Rect(0, 0, bitmap.width-1, bitmap.height-1);

        viewObject.Draw(DVASPECT_CONTENT, 1, nil, nil, Application.Handle, bitmap.Canvas.Handle, @r, nil, nil, 0);

        RectOrigem  := Rect(101, 101, 452, 388);
        RectDestino := Rect(0, 0, 351, 287);

        Bitmapdst.Width  := 352;
        Bitmapdst.Height := 288;
        Bitmapdst.Canvas.CopyRect(RectDestino, Bitmap.Canvas, RectOrigem);

        with TJPEGImage.Create do
        try
          Assign(bitmapdst);
          if SaveDialog1.Execute then 
             SaveToFile(SaveDialog1.FileName);
        finally
          Free;
        end;
      finally
        bitmapdst.Free;
        bitmap.Free;
      end;
    finally
      viewObject._Release;
    end;
  end;
end;


end.

Procure ler mais sobre delphi atraves de apostilas ou tutoriais

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Vou procurar ler mais mesmo, e que eu sou autodidata e gosto de ir direto a pratica sem muita leitura pego um codigo e transformo para as minhas necessidades, so que as vezes não da certo ai tenho que recorrer a alguma ajuda.

E como você pegar aulguma coisa pra consertar, sem saber como, desmonta tudo e monta de novo assim tambem se aprende. Eu faco a engenharia reversa.

Assim esta sendo com o Delphi, bem como o C, C++, PHP, Java, JavaScript, HTML, Linux, Windows...

Um dia eu fico bom nisso, hehehe...

Mais voltando ao assunto...

Agora compilei direitinho o codigo mais não funciona, quando clica no botao não acontece nada.

sera que faltou algo mais...

nos codigos anterioes era como 'procedures' e esse e direto no botao.

Agradeço deade já a atenção de vocês.

Link para o comentário
Compartilhar em outros sites

  • 0

seria como se fosse um painel furado no meio tipo uma moldura que eu pudese arrastar e dimensionar da forma que eu quise-se em cima da regiao onde eu queira capturar e pemanece-se la tirando foto 1 em 1 segundos(variavel) , essa foto seria armazenada em alguma pasta.

Agora compilei direitinho o codigo mais não funciona, quando clica no botao não acontece nada.

sera que faltou algo mais...

o código funciona, voce é que não esta sabendo como usar

voce não acha que o componente WebBrowser tem que mostrar uma página qualquer da internet para quando voce clicar no botão ele recortar uma parte dessa imagem e salvar ?

e que eu sou autodidata e gosto de ir direto a pratica sem muita leitura

isso em programação não funciona... leia e leia muito sobre o delphi

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

JGS, você não quer apeanas capturar uma área do desktop, mas sim gerar um vídeo com as sucessivas capturas - é o que o software que você cita faz.

Bom, neste caso, acho que você precisará usar o recurso de captura similar ao do post que citei, sendo que a captura seria controlada por um timer, e as "fotos" teriam que ser passadas a um encoder para gerar o vídeo final. Não é a toa que estes programas são vendidos. ;)

Link para o comentário
Compartilhar em outros sites

  • 0

Boa Noite, Micheus, na verdade estava pensando em fazer um parecido no qual contenha uma moldura apenas para tirar foto da regiao onde esta moldura ficar, e armazenar em uma pasta qualquer.

não vai filmar e nem instalar drivers como o outro,

seria bem mais simples.

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...