[AYUDA] Capturar screen de una ventana X

Iniciado por unish, 29 Abril 2009, 19:35 PM

0 Miembros y 1 Visitante están viendo este tema.

unish

Amigos, que tal...

Lo que estoy intentando es mostrar en un picturebox una captura de una ventana X, para esto estoy obteniendo el handle de la ventana que necesito y luego de varias funciones obtengo lo que quiero.

Pero tengo un problema.. Para hacer esto me basé en un ejemplo que tomaba la captura de la ventana activa. Pero en vez de mandarle el handle de la ventana activa, le mando el de la ventana que quiero.

Pero si dicha ventana no está activa, sale la que está arriba de ésta.
Por ejemplo, yo tengo abierto Opera y abajo bloc de notas, y quiero una captura de bloc de notas... En la captura sale la parte que ocupa bloc de notas, en opera.

Espero que me puedan entender.
¿Alguien sabe como tomar una captura de una ventana X?

Gracias.

Karcrack

Capturar una ventana no activa? No creo que puedas :-\... bueno, yo al menos no lo consegui... talvez con su hdc... no se... pero siempre puedes ponerla activa SetForeGroundWindow()


Saludos ;)

SONIC88

#2
mmm pienso lo mismo que Karcrack ya que la zona que no esta activa o esta detrás de otra ventana esta deja de pintarse, así es que veo difícil capturarla si no esta activa.

Edito: aunque he visto un programa que hace eso, excepto cuando están minimizadas, este se llama TaskSwitchXP... quizá lo conozcan...

SALUDOS.
∞•••∞ MαЯcΘ™ ∞•••∞

Karcrack

Cita de: SONIC88 en 29 Abril 2009, 22:20 PM
mmm pienso lo mismo que Karcrack ya que la zona que no esta activa o esta detrás de otra ventana esta deja de pintarse, así es que veo difícil capturarla si no esta activa.

Edito: aunque he visto un programa que hace eso, excepto cuando están minimizadas, este se llama TaskSwitchXP... quizá lo conozcan...

SALUDOS.
Cierto, aunque la ventana este tapada por otra la obtiene entera ;-) Imagino que trabaja con el hdc... :-\ Sera cuestion de Debuggear :xD

LeandroA

Estaba a punto de decir que no se podía y me iba a jugar la cabeza cosa que la tengo grande  :laugh:, pero probé el programa y me cerro la boca así que me quede caliente en saber como era y estuve como 2 horas buscando y sabia que venia por el lado de WM_PRINT pero este solo trabaja de forma interna así que lo que hice fue buscar el nombre del autor del programa mas WM_PRINT y TATAN!!!  ;D era una pelotudez Barbara


Option Explicit
Private Declare Function PrintWindow Lib "user32.dll" (ByVal hWnd As Long, ByVal hdcBlt As Long, ByVal nFlags As Long) As Long
Const PW_CLIENTONLY = &H1

Private Sub Command1_Click()
PrintWindow Handle, Me.hDC, 0
End Sub


pero bueno la verdad me gusto esto se me ocurren un par de cosas para usarlo y tampoco tenia idea como era la cosa con WM_PRINT

Saludos




ssccaann43 ©

Cita de: LeandroA en 30 Abril 2009, 09:25 AM
Estaba a punto de decir que no se podía y me iba a jugar la cabeza cosa que la tengo grande  :laugh:, pero probé el programa y me cerro la boca así que me quede caliente en saber como era y estuve como 2 horas buscando y sabia que venia por el lado de WM_PRINT pero este solo trabaja de forma interna así que lo que hice fue buscar el nombre del autor del programa mas WM_PRINT y TATAN!!!  ;D era una pelotudez Barbara


Option Explicit
Private Declare Function PrintWindow Lib "user32.dll" (ByVal hWnd As Long, ByVal hdcBlt As Long, ByVal nFlags As Long) As Long
Const PW_CLIENTONLY = &H1

Private Sub Command1_Click()
PrintWindow Handle, Me.hDC, 0
End Sub


pero bueno la verdad me gusto esto se me ocurren un par de cosas para usarlo y tampoco tenia idea como era la cosa con WM_PRINT

Saludos


Solo una palabra Leandro... BRILLANTE

Eso está excelente...
- Miguel Núñez
Todos tenemos derechos a ser estupidos, pero algunos abusan de ese privilegio...
"I like ^TiFa^"

Karcrack


SONIC88

Solo me queda decir "eres un GRANDE", jaja, muy bien LEO... ;-)

SALUDOS!!
∞•••∞ MαЯcΘ™ ∞•••∞