Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: usuario oculto en 29 Octubre 2011, 15:26 pm



Título: error al capturar pantalla (mucho tiempo sin encontrar solucion)
Publicado por: usuario oculto en 29 Octubre 2011, 15:26 pm
Aqui esta el source

Código:

Option Explicit
   
 'Api para generar un evento de tecla, en este caso Print Screen
 ''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Declare Sub keybd_event _
    Lib "user32" ( _
        ByVal bVk As Byte, _
        ByVal bScan As Byte, _
        ByVal dwFlags As Long, _
        ByVal dwExtraInfo As Long)
   
'recibe la ruta donde crear el BMP
''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub Capturar_Guardar(Path As String)
       
    ' borra el portapapeles
    Clipboard.Clear
       
    ' Manda la pulsación de teclas para capturar la imagen de la pantalla
    Call keybd_event(44, 2, 0, 0)
       
    DoEvents
    ' Si el formato del clipboard es un bitmap
    If Clipboard.GetFormat(vbCFBitmap) Then
       
        'Guardamos la imagen en disco
        SavePicture Clipboard.GetData(vbCFBitmap), Path
        MsgBox " Captura generada en: " & Path, vbInformation
        Picture1.Picture = Clipboard.GetData(vbCFBitmap)
    Else
        MsgBox " Error ", vbCritical
    End If
   
End Sub
   
Private Sub Form_Load()
    Command1.Caption = " Capturar pantalla "
End Sub

Private Sub Timer1_Timer()
 Call Capturar_Guardar("c:\pantalla.bmp")
End Sub



 He puesto capturar pantalla cada 5 seg, el problema esque tengo que tener el programa como principal , osea si por ejemplo lo ejecuto, lo dejo abierto y empiezo abrir otro programa como principal da error.

 ejemplo: abro el exe
 abro el navegador antes de los 5 seg, me da error porque el exe tiene que estar como ventana principal



Título: Re: error al capturar pantalla (mucho tiempo sin encontrar solucion)
Publicado por: ignorantev1.1 en 29 Octubre 2011, 20:10 pm
Código
  1. Option Explicit
  2.  
  3. 'Api para generar un evento de tecla, en este caso Print Screen
  4. ''''''''''''''''''''''''''''''''''''''''''''''''''''''
  5. Private Declare Sub keybd_event _
  6.    Lib "user32" ( _
  7.        ByVal bVk As Byte, _
  8.        ByVal bScan As Byte, _
  9.        ByVal dwFlags As Long, _
  10.        ByVal dwExtraInfo As Long)
  11.  
  12. 'recibe la ruta donde crear el BMP
  13. ''''''''''''''''''''''''''''''''''''''''''''''''''
  14. Private Sub Capturar_Guardar(Path As String)
  15.  
  16.    ' borra el portapapeles
  17.    Clipboard.Clear
  18.  
  19.    ' Manda la pulsación de teclas para capturar la imagen de la pantalla
  20.    Call keybd_event(44, 2, 0, 0)
  21.  
  22.    Do While Clipboard.GetData = False 'Esperas hasta que termine de cargar los datos
  23.        DoEvents
  24.    Loop
  25.  
  26.    ' Si el formato del clipboard es un bitmap
  27.    If Clipboard.GetFormat(vbCFBitmap) Then
  28.        'Guardamos la imagen en disco
  29.        Picture1.Picture = Clipboard.GetData(vbCFBitmap) 'Primero a un Picture...
  30.        Clipboard.Clear 'Limpiar
  31.        SavePicture Picture1.Picture, Path '...y luego guardas
  32.        MsgBox " Captura generada en: " & Path, vbInformation
  33.    Else
  34.        MsgBox " Error ", vbCritical
  35.    End If
  36.  
  37. End Sub
  38.  
  39. Private Sub Form_Load()
  40.    Command1.Caption = " Capturar pantalla "
  41. End Sub
  42.  
  43. Private Sub Timer1_Timer()
  44. Call Capturar_Guardar("c:\pantalla.bmp")
  45. End Sub
  46.  

Espero y te sirva, saludos!