softklin Posted August 8, 2006 at 12:06 PM Report #43025 Posted August 8, 2006 at 12:06 PM Olá pessoal! Estou a fazer um programa e notei que essas grandes apps da Adobe e tal usam um splashscreen todo bonitinho, cheio de transparências. Bom, o que eu quero não são transparências, mas dar a aparência de tal. 😁 Por isso, gostava de saber se existe alguma função especial para tirar uma screen ao desktop e coloca-la numa variável. Obrigado. MODERADORES: Podem encerrar o tópico. Está resolvido! Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.
Tyagus Posted August 8, 2006 at 02:00 PM Report #43051 Posted August 8, 2006 at 02:00 PM Tás a dizer que queres aplicar um nível de opacidade inferior a uma imagem?
Triton Posted August 8, 2006 at 04:09 PM Report #43098 Posted August 8, 2006 at 04:09 PM Queres um screenshot ou um splash screen? <3 life
NuGuN Posted August 8, 2006 at 07:17 PM Report #43146 Posted August 8, 2006 at 07:17 PM Se bem percebi queres fazer um screenshot do desktop certo? Agora perferes que te espliquem como se faz e depois tu tentas fazer(uma rapidas pesquisa no google e encontras montes de coisas) ou não estas minimamente interessado em como se faz e queres é um código para meteres o programa a funcionar o mais depressa possivel? cumps
softklin Posted August 8, 2006 at 08:08 PM Author Report #43164 Posted August 8, 2006 at 08:08 PM Dsc a demora. O que pretendo é tirar uma screenshot do desktop e guardá-la numa variável (ou na área de transferência). Mais nada, o resto já está preparado. Obrigado. Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.
softklin Posted August 8, 2006 at 08:25 PM Author Report #43170 Posted August 8, 2006 at 08:25 PM Se bem percebi queres fazer um screenshot do desktop certo? Agora perferes que te espliquem como se faz e depois tu tentas fazer(uma rapidas pesquisa no google e encontras montes de coisas) ou não estas minimamente interessado em como se faz e queres é um código para meteres o programa a funcionar o mais depressa possivel? cumps O tempo não é problema... Podem explicar-me então como fazer a screenshot? Só pretendo mesmo fazer uma coisa do estilo 'Guardar a imagem em var funScreenshot(imagem) 'Copiar p clipboard clipboard.setdata(imagem) Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.
NuGuN Posted August 8, 2006 at 10:09 PM Report #43186 Posted August 8, 2006 at 10:09 PM Ora bem... Começamos por declarar as API's e variaveis necessárias Private Declare Function GetDesktopWindow Lib "user32" () As Long Private Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long Private Declare Function GetWindowRect Lib "user32" (ByVal hWnd As Long, lpRect As RECT) As Long Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long Private Declare Function ReleaseDC Lib "user32" (ByVal hWnd As Long, ByVal hdc As Long) As Long Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Private Const SRCCOPY = &HCC0020 Depois definine-se uma função que vai ser a função que vai "tirar" o screenshot, vai ter como nome GrabScreen Variaveis para a função Dim desktop_rect As RECT Dim desktop_win As Long Dim desktop_dc As Long Dim desktop_wid As Long Dim desktop_hgt As Long Dim x As Long Dim y As Long Dim VarImg As Picture Aqui retiras as dimensões do Desktop desktop_win = GetDesktopWindow() desktop_dc = GetDC(desktop_win) GetWindowRect desktop_win, desktop_rect desktop_wid = desktop_rect.Right desktop_hgt = desktop_rect.Bottom Agora que ja se tem as dimensões vamos colocar a imagem do desktop na formcom a API StretchBlt (se perferires tb da para meter numa PictureBox) StretchBlt Form1.hdc, x, y, desktop_wid, desktop_hgt, desktop_dc, 0, 0, desktop_wid, desktop_hgt, SRCCOPY Esta linha não te sei explicar bem o que faz, parece que é para "libertar" qualquer coisa do desktop, mas fiz uns testes e se a tirar não acontece nada... mas com la esta, deve ter algum motivo! ReleaseDC desktop_win, desktop_dc E por ultimo guarda-se a imagem para uma variavel Set VarImg = Form1.Image Para o clipboar, como tudisseste... basta istu Clipboard.SetData VarImg P.S. Para que tudo istu funcione tens de meter a propriedade AutoRedraw da form a True. EDIT: Se deopis quiseres guardar a imagem vais ver que tem um tamanho disparatado, á volta de 2Mb, para ficar com uma tamanho bastante reduzido existem Class's(para comprimira a imagem) ja feitas como é o caso da cJpege. Utilizando issu podes reduzes o tamanho da imagem para uns Kb's cumps
softklin Posted August 9, 2006 at 12:37 PM Author Report #43246 Posted August 9, 2006 at 12:37 PM O código funciona perfeitamente! A screenshot é colocada no form! Obrigado 🙂 Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.
NuGuN Posted August 9, 2006 at 12:47 PM Report #43247 Posted August 9, 2006 at 12:47 PM Mas depois dela estar na variavel e no clipboard podes fazer Fom1.Cls e fica limpa ou entao envez de issu estar na form podes meter numa picturebox 🙂 cumps
skin Posted August 9, 2006 at 07:30 PM Report #43404 Posted August 9, 2006 at 07:30 PM Um membro do P@P já criou um programa destes, não tenho a certeza da linguagem. http://www.o-guardiao.com/ Our lives begin to end the day we become silent about things that matter - Martin Luther King
Crack Posted August 9, 2006 at 09:15 PM Report #43448 Posted August 9, 2006 at 09:15 PM tanto codigo, acho que se faz isso com menos codigo queres so tirar a do desktop sem aplicações a frente ou é mesmo printscreen do que estiver no ecra?
NuGuN Posted August 9, 2006 at 10:21 PM Report #43454 Posted August 9, 2006 at 10:21 PM tanto codigo, acho que se faz isso com menos codigo queres so tirar a do desktop sem aplicações a frente ou é mesmo printscreen do que estiver no ecra? Se tiveres algum código mais pequeno que faça screenshots, arranjame issu sff 🙂 Quando mais pequeno melhor 😛 Cumps
Crack Posted August 10, 2006 at 08:17 AM Report #43494 Posted August 10, 2006 at 08:17 AM Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal Flags As Long, ByVal ExtraInfo As Long) Metes isto por exemplo num button: Call keybd_event(vbKeySnapshot, 0, 0, 0) Picture1.Picture = Clipboard.GetData Isto tira o que tiver no ecra, é a mesma coisa que tar a carregar na tecla print screen.
NuGuN Posted August 10, 2006 at 10:23 AM Report #43520 Posted August 10, 2006 at 10:23 AM Espetaculo 😁 , só tem um prob, se não quiseres que issu va para o clipboard... 😞 Não me tinha lembrado dessa tecla tks 😛 Cumps
Tyagus Posted August 10, 2006 at 10:33 AM Report #43521 Posted August 10, 2006 at 10:33 AM Espetaculo 😁 , só tem um prob, se não quiseres que issu va para o clipboard... 😞 Não me tinha lembrado dessa tecla tks 😛 Cumps O código tá mesmo muito bom (Ovo de Colombo)... Mas qual é o problema de ir para o clipboard? 😛
NuGuN Posted August 10, 2006 at 10:35 AM Report #43525 Posted August 10, 2006 at 10:35 AM Issu ja depende do programa em que metas issu, ha programas em que nao tens interesse em que vá para o clipboard, imagina que tens la qualquer coisa... quando executas esse código essa coisa que estava no clipboard vai-se (penso eu) Cumps
Tyagus Posted August 10, 2006 at 10:37 AM Report #43527 Posted August 10, 2006 at 10:37 AM Ou não, guardas primeiro numa variável temporária... Ok? E assim poupas linhas de código e ganhas tempo, a não ser que o que tenhas no clipboard não dê para meter numa variável temporária...
NuGuN Posted August 10, 2006 at 11:00 AM Report #43534 Posted August 10, 2006 at 11:00 AM epa... tambem podes fazer issu, guarda numa variavel, fazer o print, guardar o print e voltar a colocar no clipboard o que la estava. Para um programa normal penso que não há problema nenhum e esse código funcionar perfeitamente. Agora.... em determinados casos perfiro utilizar um código tipo aquele que postei, em que o print vai directamente para o programa sem passar por mais nada. De qualquer forma o código do Crack é bem fixe 😞 Cumps
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now