Estoy haciendo una aplicación de captura de pantalla y todo va bien. Todo lo que necesito hacer es capturar la ventana activa y tomar una captura de pantalla de esta ventana activa. ¿Alguien sabe cómo puedo hacer esto?
c#
screenshot
active-window
usuario
fuente
fuente
Respuestas:
http://www.developerfusion.com/code/4630/capture-a-screen-shot/
fuente
para capturar el uso actual de la ventana
fuente
Sugiero la próxima solución para capturar cualquier ventana activa actual (no solo nuestra aplicación C #) o la pantalla completa con la determinación de la posición del cursor en relación con la esquina superior izquierda de la ventana o pantalla, respectivamente:
fuente
Rect
sistemaRectangle
, pero después de eso la funciónGetWindowRect
devolvió un rectángulo incorrecto. En lugar deRight
yTop
, estableceWidth
yHeight
del rectángulo de salida.var thisWindowHandle = new WindowInteropHelper(Application.Current.MainWindow).Handle;
Aquí hay un fragmento para capturar el escritorio o la ventana activa. No tiene referencia a Windows Forms.
Cómo capturar toda la pantalla:
Cómo capturar la ventana activa:
Originalmente encontrado aquí: http://www.snippetsource.net/Snippet/158/capture-screenshot-in-c
fuente
El código de KvanTTT funcionó muy bien. Lo extendí un poco para permitir un poco más de flexibilidad en el formato de guardado, así como la capacidad de guardar mediante hWnd, .NET Control / Form. Puede obtener un mapa de bits o guardarlo en un archivo, con algunas opciones.
fuente
Supongo que usas
Graphics.CopyFromScreen
para obtener la captura de pantalla.Puede usar P / Invoke para GetForegroundWindow ( y luego obtener su posición y tamaño ) para determinar desde qué región necesita copiar.
fuente
Puede usar el código de esta pregunta: ¿Cómo puedo guardar una captura de pantalla directamente en un archivo en Windows?
Simplemente cambie
WIN32_API.GetDesktopWindow()
a la propiedad Manejar de la ventana que desea capturar.fuente
Un pequeño ajuste al método estático vacío ImageSave () le dará la opción de guardarlo. El crédito va a Microsoft (http://msdn.microsoft.com/en-us/library/sfezx97z.aspx)
Su evento button_click debe codificarse de esta manera ...
fuente
Si desea usar código administrado: Esto capturará cualquier ventana a través de ProcessId.
Usé lo siguiente para activar la ventana.
Usé la pantalla de impresión para capturar una ventana.
fuente
Utiliza el siguiente código:
fuente
Basado en la respuesta de ArsenMkrt, pero esta le permite capturar un control en su formulario (por ejemplo, estoy escribiendo una herramienta que tiene un control WebBrowser y desea capturar solo su pantalla). Tenga en cuenta el uso del método PointToScreen:
Al tener el objeto Bitmap, simplemente puede llamar Guardar en él
Lo anterior asume que el GC tomará el mapa de bits, pero tal vez sea mejor asignar el resultado de someControl.getScreenshot () a una variable de mapa de bits, luego deseche esa variable manualmente cuando termine con cada imagen, especialmente si está haciendo esto a menudo ( supongamos que tiene una lista de páginas web que desea cargar y guardar capturas de pantalla de ellas):
Aún mejor, podría emplear una cláusula de uso, que tiene el beneficio adicional de liberar los recursos de mapa de bits incluso en el caso de que ocurra una excepción dentro del bloque de uso (hijo):
Actualizar:
Ahora la herramienta WebCapture está implementada con ClickOnce ( http://gallery.clipflair.net/WebCapture ) desde la web (también tiene un buen soporte de actualización automática gracias a ClickOnce) y puede encontrar su código fuente en https://github.com/Zoomicon / ClipFlair / tree / master / Server / Tools / WebCapture
fuente