elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Personaliza-Escoge el diseño del foro que más te guste.


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  alguien sabe como puedo capturar la pantalla, mas rapido o mejor???
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 4 Ir Abajo Respuesta Imprimir
Autor Tema: alguien sabe como puedo capturar la pantalla, mas rapido o mejor???  (Leído 11,904 veces)
Belial & Grimoire


Desconectado Desconectado

Mensajes: 559


Tea_Madhatter


Ver Perfil
alguien sabe como puedo capturar la pantalla, mas rapido o mejor???
« en: 3 Septiembre 2007, 02:33 »

hola

estoy usando la clase Cjpeg para capturar la pantalla, pero tengo un problema.... cuando creo la imagen por primera vez, no tengo ningun problema pero cuando quiero crear otra ya no puedo... y si la elimino... se tarda demasiado en volver a crear otra captura... y cuando lo intente aumentando el tiempo... no se guarda bien y solo me llega la captura, y cuando la abro no hay nada...

alguien sabe que puedo hacer, o alguien conoce otra forma de crear capturas de pantalla y que no haya tenido problemas...

ya que tambien intente con keybd_event...

pero la imagen que se crea pesa 2.50 MB ... y eso no me gusto mucho...

espero me puedan ayudar

gracias  ;D


En línea

.                                 
LeandroA
Moderador
***
Desconectado Desconectado

Mensajes: 759


www.leandroascierto.com


Ver Perfil WWW
Re: alguien sabe como puedo capturar la pantalla, mas rapido o mejor???
« Respuesta #1 en: 3 Septiembre 2007, 03:25 »

una forma mas rapida es guardandola con formato .png pero ya vas a depender de
GDI ++

si quieres te paso un modulo para guardar las imagenes en ese formato (pero tene en cuenta que la pc que lo ejecute deve tener gdi plus instalado , en xp ya viene por defecto)

Saludos


En línea

HaDeS, -
WarZone Master

Desconectado Desconectado

Mensajes: 284



Ver Perfil WWW
Re: alguien sabe como puedo capturar la pantalla, mas rapido o mejor???
« Respuesta #2 en: 3 Septiembre 2007, 04:55 »

Una combinacion entre keybd_event y el modulo CJpeg, apenas vine a conocer este modulo asi que no se mucho como se maneja, pero como le di al codigo quedo perfecto :P

Código
  1. Dim ImagenJpg As cJpeg
  2. Dim Calidad%, Milimetros!
  3. Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
  4.  
  5. 'Primero capturas la imagen
  6. Private Sub Command1_Click()
  7. Call keybd_event(vbKeySnapshot, 1, 0, 0)
  8. End Sub
  9.  
  10. 'Luego se maximiza el formulario y mete el picture, le pone la calidad que escojemos en el form_load, y luego lo graba en el archivo prueba.jpg
  11. Private Sub Command2_Click()
  12. Form1.WindowState = 2
  13. Picture1.Picture = Clipboard.GetData
  14. ImagenJpg.Quality = Calidad
  15. ImagenJpg.SetSamplingFrequencies 1, 1, 1, 1, 1, 1
  16. DoEvents
  17. If ImagenJpg.SampleHDC(Picture1.hDC, Picture1.ScaleWidth, Picture1.ScaleHeight) = 0 Then
  18. DeNuevo:
  19.    If Dir$("c:\prueba.jpg") <> "" Then
  20.        Kill "c:\prueba.jpg"
  21.        GoTo DeNuevo
  22.    Else
  23.        ImagenJpg.SaveFile ("c:\prueba.jpg")
  24.    End If
  25. End If
  26. End Sub
  27.  
  28. Private Sub Form_Load()
  29. Set ImagenJpg = New cJpeg
  30. Calidad = 50
  31. If Calidad < 1 Then Calidad = 1
  32. If Calidad > 100 Then Calidad = 100
  33. Picture1.Width = Screen.Width
  34. Picture1.Height = Screen.Height
  35. Picture1.ScaleMode = vbPixels
  36. End Sub
  37.  
El inconveniente que encontre en este modulo, es que se demora un buen rato convirtiendo el picture a una calidad menor, o igual segun el caso. Es todo, pruebalo y me decis si te funciono.

Saludos ;)
En línea

Belial & Grimoire


Desconectado Desconectado

Mensajes: 559


Tea_Madhatter


Ver Perfil
Re: alguien sabe como puedo capturar la pantalla, mas rapido o mejor???
« Respuesta #3 en: 3 Septiembre 2007, 07:44 »

hola

Código:
LeandroA

no sabia eso.. y si kieres colocar el modulo.. te lo agradeceria... siempre es bueno aprender algo nuevo...

Código:
HaDeS, -

esta intersante el codigo que colocaste... voy a checarlo... pero tengo el problema que tu tambien tienes... el archivo se tarda mucho en volver a aparecer...

lo unico que se me ocurre es que el programa detecte si el archivo esta listo... y cuando este listo... me mande un mensaje para luego descargarlo... el problema es que se escucha muy chafa para el programa... pero no se me ocurre otra cosa...

por eso, si alguien conoce algun otro modo de capturar la pantalla y que sea mas eficiente... porfavor, diganme..

espero su respuesta

gracias   ;D
« Última modificación: 3 Septiembre 2007, 07:47 por makuvex_linux » En línea

.                                 
Porte

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: alguien sabe como puedo capturar la pantalla, mas rapido o mejor???
« Respuesta #4 en: 3 Septiembre 2007, 07:58 »

Una pregunta estupida, pero ya que no se crear un tema... quisiera preguntarles donde se guarda las capturas de pantallas.
Un saludo.
PORTE
En línea

HaDeS, -
WarZone Master

Desconectado Desconectado

Mensajes: 284



Ver Perfil WWW
Re: alguien sabe como puedo capturar la pantalla, mas rapido o mejor???
« Respuesta #5 en: 3 Septiembre 2007, 08:02 »

El problema esta en que el modulo CJpeg, al llegar a esta parte: SampleHDC(Picture1.hDC, Picture1.ScaleWidth, Picture1.ScaleHeight)
Lo que hace en realidad es esto SampleHDC(Picture1.hDC, 1200, 800), Segun cada resolucion de pantalla, y en el modulo hay varios bucles recorriendo cada pixel del picture, asi que el trabajo se vuelve pesadisimo, y por eso demora tanto en crear.
Con un procesador de 2.3ghz, y una resolucion de 1200 x 800, la imagen se me genero en 4.937 segundos, es mucho.
Pienso que se puede estrechar la imagen con el mismo modulo,o ponerla a una resolucion mas pequeña, como por ejemplo 800 x 600, pero ahora estoy cansado :P. Mañana, digo, ahora mas tarde (por la tarde), retomo a ver y luego te cuento, eso si tengo tiempo.
Mientras, ve mirando si se puede acomodar la imagen a una resolucion pequeña, asi yo creo que si podria dar.
Es todo.

Saludos ;)


Porte:
Si te fijas bien en mi codigo, hay una parte donde se indica la ruta del archivo de la imagen:
Código
  1.    If Dir$("c:\prueba.jpg") <> "" Then
  2.        Kill "c:\prueba.jpg"
  3.        GoTo DeNuevo
  4.    Else
  5.        ImagenJpg.SaveFile ("c:\prueba.jpg")
  6.    End If
  7.  

Si aplicas el codigo que te puse ahi, la imagen con la captura de pantalla se guardara en c:\prueba.jpg

Saludos de nuevo :)
En línea

cobein


Desconectado Desconectado

Mensajes: 759



Ver Perfil WWW
Re: alguien sabe como puedo capturar la pantalla, mas rapido o mejor???
« Respuesta #6 en: 3 Septiembre 2007, 08:04 »

El tema es que para guardarla en formato jpg con codigo de visual es my lento, podrias usar GDI o DirectX pero no estan disponibles en todos los sistemas, algo que se me acurre que podrias hacer es escalar la imagen a un 75% o 50% esto va a redicir la calidad un poco y el tamano, y luego usar 7-zip o zlib para comprimirla.
7-zip lo podes llamar directamente usando el shell y tine muy buena compresion.

O sino lo otro podria ser utilizando la tecnica que usan los compresores de video o mismo el gif animado, que seria basicamente mandar la primer imagen completa y de ahi en mas solamente mandar los cambios ,pero esto es un poco mas dificil.
En línea

http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.
Porte

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: alguien sabe como puedo capturar la pantalla, mas rapido o mejor???
« Respuesta #7 en: 3 Septiembre 2007, 08:06 »

No te entiendo lo del codigo... en c (disco local) no hay ninguna carpeta llamada prueva.jpg
Perdonen por usurpar el post. :-[ :-[
En línea

cobein


Desconectado Desconectado

Mensajes: 759



Ver Perfil WWW
Re: alguien sabe como puedo capturar la pantalla, mas rapido o mejor???
« Respuesta #8 en: 3 Septiembre 2007, 08:11 »

Una cosa hay una version un poco mas rapida de ese modulo...mmm Creo que se llama cIjpeg o algo por el estilo
En línea

http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.
HaDeS, -
WarZone Master

Desconectado Desconectado

Mensajes: 284



Ver Perfil WWW
Re: alguien sabe como puedo capturar la pantalla, mas rapido o mejor???
« Respuesta #9 en: 3 Septiembre 2007, 08:22 »

Bueno, estuve probando con los dos modulos, y aca estan las nuevas estadisticas:

Modulo CJpeg:
Sin compilar: 4.391 Segundos
Compilado: 0.953 Segundos

Modulo CJpegI;
Sin compilar: 3.891 Segundos
Compilado: 0.813 Segundos

Efectivamente Cobein tiene la razon, y el modulo CJpegI difiere al modulo CJpeg por unos 0.14 segundos.
Pueden descargar el modulo desde http://planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=50351&lngWId=1

Saludos :D
En línea

Páginas: [1] 2 3 4 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Como Puedo Capturar la Ip y Puerto de mi maquina
Programación General
kripo32 0 743 Último mensaje 29 Mayo 2013, 23:40
por kripo32
[Source] Compresor mejor y mas rápido que FreeARC, en C.
Programación C/C++
sabeeee 0 520 Último mensaje 25 Febrero 2015, 23:04
por sabeeee
Lenguaje más rápido o mejor?
Programación General
andrecid 2 1,123 Último mensaje 19 Julio 2015, 22:23
por ivancea96
Alguien sabe por que me ha salido la pantalla azul? « 1 2 »
Windows
Robocop8 11 4,038 Último mensaje 14 Junio 2017, 18:41
por bettu
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines