Paulo Nobre Postado Outubro 19, 2006 Denunciar Share Postado Outubro 19, 2006 As funções abaixo servem para capturar screens...capturar a tela todaKeybd_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 acimaKeybd_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? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Thales Pontes Martins Postado Outubro 21, 2006 Denunciar Share Postado Outubro 21, 2006 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Thales Pontes Martins Postado Outubro 21, 2006 Denunciar Share Postado Outubro 21, 2006 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo Nobre Postado Outubro 21, 2006 Autor Denunciar Share Postado Outubro 21, 2006 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! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Thales Pontes Martins Postado Outubro 21, 2006 Denunciar Share Postado Outubro 21, 2006 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: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo Nobre Postado Outubro 22, 2006 Autor Denunciar Share Postado Outubro 22, 2006 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 paraJPEG.Assign(Image1.Picture.Bitmap);Muito estranhoNão dá erro salva a janela ativa, mas sem o ponteiro.No caso do gif é pior dá erro.Dá uma ajuda aí!Por favor! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Thales Pontes Martins Postado Outubro 22, 2006 Denunciar Share Postado Outubro 22, 2006 É 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo Nobre Postado Outubro 22, 2006 Autor Denunciar Share Postado Outubro 22, 2006 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? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Thales Pontes Martins Postado Outubro 22, 2006 Denunciar Share Postado Outubro 22, 2006 ok! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Paulo Nobre
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
33 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.