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

Keybd_event(vk_snapshot,0, 0, 0);


Paulo Nobre

Pergunta

As funções abaixo servem para capturar screens...

capturar a tela toda

Keybd_Event(VK_Snapshot,0, 0, 0);

Ou a janela ativa

Keybd_Event(VK_Snapshot,1, 0, 0);

Gostaria de ter a opção da seta do mouse aparecer ou não.

Acontece que as funções acima

Keybd_Event(VK_Snapshot,0, 0, 0);

Keybd_Event(VK_Snapshot,1, 0, 0);

Capturam sem a seta.

Tem como ter estas duas opções usando estas funções?

Existe um código por aí, que captura com o sem, mas não faz uso destas funções!

Teria como fazer isto usando elas?

A propósito será que tem alguma coisa a ver com os parametros da função...

Não sei o que significam o terceiro(0) e o quarto parâmetro(0) das funções acima.

Alguém sabe?

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

tente isso ->

  .
  .
  JPEG := TJPEGImage.Create;
  //Depois você carrega o bitmap do Image pelo Clipboard:
  Image1.Picture.Bitmap.LoadFromClipboardFormat(CF_BitMap,Clipboard.GetAsHandle(CF_BitMap),0);
  GetCursorPos(Pt);
  GetWindowRect(GetForegroundWindow,Rt);
  DrawIconEx(image1.picture.bitmap.canvas.Handle,pt.x-rt.left,pt.y-rt.top,GetCursor,0,0,0,0,DI_NORMAL or DI_DEFAULTSIZE);
  //Depois você assinala o JPEG a partir do Bitmap:
  JPEG.Assign(Image1.Picture.Bitmap);
  //Depois você salva o JPEG:
  JPEG.SaveToFile(FileName);
  JPEG.Free;
  .
  .

Isso porque você primeiro tem que desenhar no bitmap e depois converter pra jpeg e salvar.

Link para o comentário
Compartilhar em outros sites

  • 0

Aí, essas MP's estão doidonas, aehh! Eu recebi duas repostas mais ou menos parecidas a uma mesma MP que enviei a você. Não entendí nada. E já mandei outra MP que você ainda não deve ter lido respondendo a essas.

Link para o comentário
Compartilhar em outros sites

  • 0

Thales, você é f***.

Deu certo, vou fazer o mesmo para o gif e depois partir para cima do programa para adaptar.

Agora vem a parte fácil, mas chata, que é a perfumaria.

Colocar opção para o usuário capturar com seta ou não etc...

PS: Acabei achando sua MP e mandei uma para você.

Tinha escrito uma resposta mas acho que não chegou pois na hora meu internet congelou.

Coisas do ti bill. Aí reescrevi uma outra. Não sei se recebeu.

Acho que o negócio tá meio doido.

Não vao poder dizer que estou fazendo flood, pois isto é apenas um complemento, não é?

O sério estáí em cima não é?

estou meio veio para tomar bronca!

Link para o comentário
Compartilhar em outros sites

  • 0

Eu recebí as 2 MP's que respondem a mesma menssagem.

E não se preocupe com flood não, os moderadores aqui são gente boa. Além do mais o banco de dados não vai se sobrecarregar com um floodzinho ou outro. O máximo que pode acontecer é eles zerarem o seu número de posts e bloquearem o seu acesso ao fórum por 2 anos. :lol:

Link para o comentário
Compartilhar em outros sites

  • 0

Thales não está funcionando para Jpeg e Gif no caso da janela ativa:

Veja os códigos:

//Do Jpeg
....
else if reg.ReadString('Capturar Ponteiro')= 'Sim' then
  begin
    if reg.ReadString('Capturar')='A tela toda' then
      begin
        //Primeiro você cria o JPEG:
        JPEG := TJPEGImage.Create;
        //Depois você carrega o bitmap do Image pelo Clipboard:
        Image1.Picture.Bitmap.LoadFromClipboardFormat(CF_BitMap,Clipboard.GetAsHandle(CF_BitMap),0);         
       GetCursorPos(Pt); //Para capturar o ponteiro
        DrawIconEx(Image1.picture.Bitmap.Canvas.handle,pt.x,pt.y,GetCursor,0,0,0,0,DI_NORMAL or DI_DEFAULTSIZE);//Para capturar o ponteiro
        //Depois você assinala o JPEG a partir do Bitmap:
        JPEG.Assign(Image1.Picture.Bitmap);
        //Depois você salva o JPEG:
        JPEG.SaveToFile(FileName);
        JPEG.Free;
      end
    else if reg.ReadString('Capturar')= 'A janela ativa' then
      begin
        //Primeiro você cria o JPEG:
        JPEG := TJPEGImage.Create;
        //Depois você carrega o bitmap do Image pelo Clipboard:
        Image1.Picture.Bitmap.LoadFromClipboardFormat(CF_BitMap,Clipboard.GetAsHandle(CF_BitMap),0);         
GetCursorPos(Pt); //Para capturar o ponteiro         
GetWindowRect(GetForegroundWindow,Rt);  //Para capturar o ponteiro        
 DrawIconEx(Image1.picture.Bitmap.Canvas.handle,pt.x-rt.left,pt.y-rt.top,GetCursor,0,0,0,0,DI_NORMAL or DI_DEFAULTSIZE); //Para capturar o ponteiro         //Depois você assinala o JPEG a partir do Bitmap:
        JPEG.Assign(Image1.Picture.Bitmap);
        //Depois você salva o JPEG:
        JPEG.SaveToFile(FileName);
        JPEG.Free;
      end;
    end;


//Do gif
else if reg.ReadString('Capturar Ponteiro')= 'Sim' then
      begin
        if reg.ReadString('Capturar')='A tela toda' then
          begin
            Bitmap := TBitmap.Create;
            Gif:= TGifImage.Create;
            Image1.Picture.Bitmap.LoadFromClipboardFormat(CF_BitMap,Clipboard.GetAsHandle(CF_BitMap),0);   GetCursorPos(Pt);   GetWindowRect(GetForegroundWindow,Rt);
            DrawIconEx(image1.picture.Bitmap.Canvas.handle,pt.x,pt.y,GetCursor,0,0,0,0,DI_NORMAL or DI_DEFAULTSIZE);       BitmapToGif(Bitmap,Gif);       Gif.Assign(Image1.Picture.Bitmap);
            Gif.SaveToFile(FileName);
            Bitmap.Free;
            Gif.Free;
          end
        else if reg.ReadString('Capturar')='A janela ativa' then
          begin
            Bitmap := TBitmap.Create;
            Gif:= TGifImage.Create;
            Image1.Picture.Bitmap.LoadFromClipboardFormat(CF_BitMap,Clipboard.GetAsHandle(CF_BitMap),0);   GetCursorPos(Pt);   GetWindowRect(GetForegroundWindow,Rt);
            GetCursorPos(Pt); //Para capturar o ponteiro
            GetWindowRect(GetForegroundWindow,Rt);//Para capturar o ponteiro             DrawIconEx(Image1.picture.Bitmap.Canvas.handle,pt.x-rt.left,pt.y-rt.top,GetCursor,0,0,0,0,DI_NORMAL or DI_DEFAULTSIZE); //Para capturar o ponteiro
            Gif.SaveToFile(FileName);
            Bitmap.Free;
            Gif.Free;
          end;
      end;

No caso do Jpeg ele ignora o código:
GetCursorPos(Pt); //Para capturar o ponteiro         
GetWindowRect(GetForegroundWindow,Rt);  //Para capturar o ponteiro        
 DrawIconEx(Image1.picture.Bitmap.Canvas.handle,pt.x-rt.left,pt.y-rt.top,GetCursor,0,0,0,0,DI_NORMAL or DI_DEFAULTSIZE); 

No building ele diz que Rt é declarada e não usada, ou seja como se ele pulasse o código e de fato pula.

Coloquei um showmessage entre eles e não passa lá ele pula para

JPEG.Assign(Image1.Picture.Bitmap);

Muito estranho

Não dá erro salva a janela ativa, mas sem o ponteiro.

No caso do gif é pior dá erro.

Dá uma ajuda aí!Por favor!

Link para o comentário
Compartilhar em outros sites

  • 0

É impossivel ele pular essa parte do código, só se você tiver colocado como comentário, porque não tem nenhum IF que teste a execução apenas dessa parte do código.

Comentários :

Na parte que captura Gif Tela Toda, você não precisa colocar o comando GetWindowRect(GetForegroundWindow,rt); porque esse comando põe o retangulo da janela ativa no retangulo RT, o que não é preciso porque se está capturando a tela toda.

O comando BitmapToGif(Bitmap, Gif); só é executado quando é Tela Toda, por que?

E que parametro é esse Bitmap?

não seria BitmapToGif(Image1.Picture.Bitmap, Gif);

Não conheço esse comando porque não faz parte do Delphi.

E quando é Gif Janela Ativa você só está criando o Gif e salvando ele. Esqueceu de assinalar o Image1.picture.bitmap e depois salvar.

Link para o comentário
Compartilhar em outros sites

  • 0

Thales, mudei algumaas coisas das quais você falou.

O gif paraou de dar erro, mas não captura o ponteiro o jepeg continua na mesma.

Ele usa duas units que são grandes e portanto seria deselegante postar aqui.

Estou mandando por email para você o projeto.

OK?

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...