Problemas con _ScreenCapture_Capture

Tus preguntas. Algoritmos o Grupos de Comandos formando Programas Escripts.
Responder
Avatar de Usuario
pan
Mensajes: 17
Registrado: 18 Abr 2017, 20:25

Problemas con _ScreenCapture_Capture

Mensaje por pan »

Cabros que puede ser que al monteo de ocupar _ScreenCapture_CaptureWnd no me tome la ventana hijo

Ejemplo:

Con Prt Scr de windows:

Imagen

Con _ScreenCapture_CaptureWnd de autoIt:

Imagen

Como ven la venta hijo (verde) se pierde trate dirigiendo la _ScreenCapture_CaptureWnd a la venta y esta no muestra su contenido tambien prove varios programas de captura que alguno usuarios del foro hicieron ejemplo http://www.emesn.com/autoitforum/viewto ... f=5&t=1848


Mi humilde código

Código: Seleccionar todo

#include <ScreenCapture.au3>

HotKeySet("!{F8}", "Salir") ;Pulsando alt + f8  llamo a una función

	$dias=0
	$horas = 0
	$minutos = 0
	$segundos = 10

	$totalsegundos = $dias*3600*24+$horas * 3600 + $minutos * 60 + $segundos
	While 1
	   Sleep(1000 * ($totalsegundos-20))
		;Miramos la pantalla Principal
			AutoItSetOption('MouseCoordMode', 0)
			WinWait('Internet Caffee Administrator [REGISTRED]')
			WinActivate('Internet Caffee Administrator [REGISTRED]')
			MouseClick('primary',600,390,1,0)
			Sleep(1000)
		;Tomamos la foto
			
			$hWnd = WinGetHandle("Internet Caffee Administrator [REGISTRED]")
			Sleep(500)
			$SsTake = _ScreenCapture_CaptureWnd("", $hWnd) 
			_ScreenCapture_SaveImage(@MyDocumentsDir & "\imagen.jpg", $SsTake)
			
		;Mostramos la foto	
			ShellExecute(@MyDocumentsDir & "\imagen.jpg")
					
	WEnd
	
	Func Salir()
		Exit
	EndFunc 


Si alguien sabe de algo :)
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Problemas con _ScreenCapture_Capture

Mensaje por Chefito »

La función _ScreenCapture_CaptureWnd te captura la ventana que tu le has dicho que capture, por eso no te captura la ventana de arriba. Utiliza la función _ScreenCapture_Capture para capturar toda la pantalla en vez de _ScreenCapture_CaptureWnd a ver que resultado te da :smt003 . Recuerda que estas funciones pueden capturar el trozo que le indiques, no hace falta que captures toda la pantalla si no quieres.
También puedes capturar las dos ventanas independientemente. El título de la otra ventana supongo que sea: Totalcounters:

Si sigues con problemas, dilo que hay otras formas de hacerlo. Pero seguramente con esta función se te solucionará el problema.

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Avatar de Usuario
pan
Mensajes: 17
Registrado: 18 Abr 2017, 20:25

Re: Problemas con _ScreenCapture_Capture

Mensaje por pan »

Si Chefito intente dirigiendo la captura a la venta Totalcounters y sale la foto así:

Imagen


probé también _ScreenCapture_Capture pantalla completa y tampoco aparece quizas es un problema referente a la ventana que es trasparente le voy a dejar la info de la ventana si algo les dice.



>>>> Window <<<<
Title: TotalCounters
Class: TFrmTotalCounters
Position: 830, 467
Size: 258, 117
Style: 0x96000000
ExStyle: 0x00090000
Handle: 0x00000000000E054A

>>>> Control <<<<
Class: TvgScene
Instance: 1
ClassnameNN: TvgScene1
Name:
Advanced (Class): [CLASS:TvgScene; INSTANCE:1]
ID: 1377614
Text:
Position: 0, 0
Size: 258, 117
ControlClick Coords: 148, 27
Style: 0x54000000
ExStyle: 0x00000000
Handle: 0x000000000015054E

>>>> Mouse <<<<
Position: 978, 494
Cursor ID: 0
Color: 0x343434

>>>> StatusBar <<<<

>>>> ToolsBar <<<<

>>>> Visible Text <<<<

>>>> Hidden Text <<<<
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Problemas con _ScreenCapture_Capture

Mensaje por Chefito »

No se porque no se captura esa ventana. Tendría que tener acceso a ella para hacer pruebas y ver que puede pasar. Seguro que capturas bien el handle de esa ventana? Recuerda que se puede capturar con el título, la clase, etc...

Igualmente, si dices que con la tecla imprimir pantalla te aparece sin problemas, pues hazlo así y no te compliques la vida.

Código: Seleccionar todo

#include <ScreenCapture.au3>
#include <Clipboard.au3>

send("{PRINTSCREEN}")

While _ClipBoard_IsFormatAvailable($CF_BITMAP) <> 1
   Sleep(50)
WEnd
While _ClipBoard_Open(0) <> 1
   Sleep(50)
WEnd

$hBitmap = _ClipBoard_GetDataEx($CF_BITMAP)

While IsPtr($hBitmap) = 0
   Sleep(50)
WEnd

_ScreenCapture_SaveImage(@MyDocumentsDir & "\GDIPlus_Image.jpg", $hBitmap)

_ClipBoard_Close()

ShellExecute(@MyDocumentsDir & "\GDIPlus_Image.jpg", $hBitmap)
Esto es un ejemplo básico. Se podrían tratar los errores mucho mejor. Eso te lo dejo a ti :smt002 .
Si te interesa, también puedes tratar la imagen que capturas. Para eso tenemos la udf gdiplus, aunque muchas veces no es fácil de lidiar con ella. Pero tranquilo, hay muchos ejemplos.

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Avatar de Usuario
pan
Mensajes: 17
Registrado: 18 Abr 2017, 20:25

Re: Problemas con _ScreenCapture_Capture

Mensaje por pan »

Muchas gracias chefito lo único que le agregue fue el send("!{PRINTSCREEN}") para que haga la función de alt + print y tome la ventana que solo necesito

Código: Seleccionar todo


;Subimos la foto
			Local $Server = 'mueblesmiguelguerra.cl' ; UNIVERSITY OF CAMBRIDGE ANONYMOUS FTP SERVER
			Local $Username = '******'
			Local $Pass = '********'

			Local $Open = _FTP_Open('MyFTP Control')
			Local $Conn = _FTP_Connect($Open, $Server, $Username, $Pass)
			If @error Then
				MsgBox($MB_SYSTEMMODAL, '_FTP_Connect', 'ERROR=' & @error)
			Else
				 
				Local $s_LocalFile = "D:\IN\imagen.jpg"
				Local $s_RemoteFile = "/home/mueblesm/public_html/prueba/imagen.jpg"
								 
				;Local $DirC = _FTP_DirCreate($Conn, "/public_html/prueba")
				Local $Arch = _FTP_FilePut($Conn, $s_LocalFile, $s_RemoteFile ,$FTP_TRANSFER_TYPE_BINARY)
				Local $Ftpc = _FTP_Close($Open)
				FileMove ("D:\IN\imagen.jpg", "D:\RES\") ; Mueve el archivo que ya se subio a una unidad que contendra estos respaldos dentro del equipo local.
	  
			EndIf

Ahora el problema lo tengo al subir al FTP lo veo todo bien no c por que la imagen no se sube puedo crear carpetas pero no subir imágenes :smt021
Responder