2010-10-07 26 views
15

Necesito capturar una captura de pantalla del área de cliente de la ventana de desplazamiento, usando .NET. Mi primera prioridad es capturar capturas de pantalla de la página web. Pero este no puede ser el único caso de uso. Por ejemplo, también puede ser un área de texto en el Bloc de notas.Capturar una captura de pantalla de contenido de ventana de desplazamiento

Algunas aplicaciones (FastStone Capture, PicPick) pueden emular el comportamiento del usuario para llegar a la parte oculta de un área desplazable y capturarla. Estoy buscando algo como esto o recomendaciones para una forma alternativa de obtener el mismo resultado.

alt text

+3

+1 para incluir gráficos explicativos. –

+0

¿obtuviste alguna solución en este caso? Estoy buscando una solución general que funcione para cualquier ventana habilitada con scroll. –

+1

Encontré una solución para capturar páginas web http://stackoverflow.com/a/3904596/177194 También está WatiN por ahí: http://watin.org No creo que sea posible usar un enfoque común para desplazarse absolutamente cualquier ventana en Windows debido a que hay un montón de software basado en tiempos de ejecución no nativos/personalizados. La mayoría de los navegadores y aplicaciones Java requerirán soluciones individuales. – dreikanter

Respuesta

2

He continuado mi búsqueda y fundé IECapt, una herramienta de código abierto que puede tomar una captura de pantalla de la página web usando IE dentro de ella. Tiene las versiones de С ++ y .NET. También hay un análogo basado en Qt/WebKit del mismo autor: http://cutycapt.sourceforge.net.

Esta herramienta no es una respuesta directa a mi pregunta, pero ambas resuelven el problema original en un 90%.

3

Puede obtener ventanas para redirigir una WM_PAINT a un buffer fuera de pantalla con WM_PRINT y WM_PRINTCLIENT. Esto es mejor que screencraping porque asegura que las partes oscuras de una ventana (detrás de otras ventanas) estén pintadas de todos modos. Si su ventana de destino se desplaza desplazando una posición de ventana secundaria, se debe aplicar WM_PRINT. Tal vez también ayude a tu escenario.

Cuestiones relacionadas