Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Capturar pantalla

Estas en el tema de Capturar pantalla en el foro de Visual Basic clásico en Foros del Web. Queria saber si existe la posibilidad en vb6 poder capturar una imagen pero omitiendo a nuestra aplicación, o sea, sacar una foto pero que no ...
  #1 (permalink)  
Antiguo 21/07/2009, 12:35
Avatar de piojoman  
Fecha de Ingreso: enero-2005
Ubicación: Argentina
Mensajes: 224
Antigüedad: 19 años, 3 meses
Puntos: 3
Capturar pantalla

Queria saber si existe la posibilidad en vb6 poder capturar una imagen pero omitiendo a nuestra aplicación, o sea, sacar una foto pero que no salga nuestra aplicacion... logico sería poner el form en visible = false, pero lo que queria es cargar la imagen que obtenemos en un picturebox, o sea que no puedo usarlo... y todos los ejemplos que encontre obtienen una imagen completa incluyendo a mi programa y si cargo esa foto y de forma constante se forma un ciclo horrible de mi propio programa...

alguien me entendio??? y se podria lograr lo que suguiro?? ideas??
  #2 (permalink)  
Antiguo 21/07/2009, 18:03
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 2 meses
Puntos: 19
Respuesta: Capturar pantalla

Hola, ¿ y porque no podes ocultarlo y mostrar depues el form y cargar la imagen en el picturebox ? algo asi:

Código vb:
Ver original
  1. Option Explicit
  2.  
  3. Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
  4.  
  5. Private Sub Capturar()
  6.     Me.Visible = False
  7.     Clipboard.Clear
  8.     Call Pausa
  9.     Call keybd_event(44, 2, 0, 0)
  10.     DoEvents
  11.     Me.Show
  12.     If Clipboard.GetFormat(vbCFBitmap) Then
  13.         Picture1.Picture = Clipboard.GetData(vbCFBitmap)
  14.     Else
  15.         MsgBox " Error ", vbCritical
  16.     End If
  17. End Sub
  18.  
  19. Private Sub Command1_Click()
  20.     Call Capturar
  21. End Sub
  22.  
  23. Private Sub Pausa()
  24.    Dim vPausa As Long
  25.    vPausa = 1 + Timer
  26.  
  27.     While vPausa >= Timer
  28.         DoEvents
  29.     Wend
  30. End Sub

saludos.
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
  #3 (permalink)  
Antiguo 23/07/2009, 13:09
 
Fecha de Ingreso: abril-2005
Mensajes: 351
Antigüedad: 19 años
Puntos: 3
Respuesta: Capturar pantalla

hola poniendo atributos LAYERED al formulario BitBlt no lo captura.

Código:
Option Explicit
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Private Declare Function GetDC Lib "user32.dll" (ByVal hwnd As Long) As Long
Private Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function BitBlt Lib "gdi32.dll" (ByVal hDestDC 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 dwRop As Long) As Long

Const LWA_ALPHA         As Long = &H2
Const GWL_EXSTYLE       As Long = (-20)
Const WS_EX_LAYERED     As Long = &H80000

Private Sub Command1_Click()
    Dim DC As Long
    DC = GetDC(0)
    BitBlt Picture1.hdc, 0, 0, Screen.Width / 15, Screen.Height / 15, DC, 0, 0, vbSrcCopy
    Picture1 = Picture1.Image
    DeleteDC DC
End Sub

Private Sub Form_Load()
    With Picture1
        .AutoRedraw = True
        .Move 0, 0, Screen.Width, Screen.Height
    End With
    Command1.ZOrder 0
    SetWindowLong Me.hwnd, GWL_EXSTYLE, GetWindowLong(Me.hwnd, GWL_EXSTYLE) Or WS_EX_LAYERED
    SetLayeredWindowAttributes Me.hwnd, 0, 255, LWA_ALPHA
End Sub
Saludos
__________________
www.leandroascierto.com
  #4 (permalink)  
Antiguo 23/07/2009, 18:40
Avatar de piojoman  
Fecha de Ingreso: enero-2005
Ubicación: Argentina
Mensajes: 224
Antigüedad: 19 años, 3 meses
Puntos: 3
Respuesta: Capturar pantalla

bueno muchas gracias a ambos por las respuestas y fueron ambas muy satisfactorias...
seba123neo el codigo esta correctisimo de hecho hace todo como lo necesitaba pero tambien provoca un efecto como reapertura de la aplicacion en la barra de tareas si uno lo ejecuta constantemente como por ejemplo en un timer.
LeandroA el codigo que colocaste funciona tambien funciona de 10 y desconocia la funcion BitBlt lo que hizo que me ponga a leer un poco mas....
bueno gracias por la ayuda!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:11.