Capturador
Publicado: 23 Nov 2009, 14:38
Este es un programa completo que además uso bastante en el trabajo.
Se trata del típico capturador de pantallas, que ha ido creciendo hasta tener una funcionalidad aceptable.
Surgió porque en el trabajo hacía muchas capturas de mapitas, copiaba con ImprPant de Windows, abría el Paint y pegaba, recortaba el trozo que quería... así que hice un script que automáticamente presionaba el ImprPant, abría el Paint y pegaba... y de esas cuatro líneas fui ampliando y ampliando y surgió esto.
Encontré por la web programas parecidos, en algunos casos bastante más complejos, pero quería algo compacto y con funcionalidad suficiente. AutoIt es ideal para hacer un programita distribuible en un único EXE, así que me hice mi versión.
La funcionalidad que ofrece es la siguiente:
5 métodos de captura: Toda la pantalla, Ventana activa, Cliente de la Ventana activa, Objeto (paneles, botones, etc) y Rectángulo marcado por el usuario.
En el modo Objeto se va recuadrando en tiempo real el objeto que será capturado.
En el modo Rectángulo sale una ventanita de zoom para ajustar exactamente la zona a capturar.
Como opciones de post-proceso está guardar la imagen como png u otros formatos registrados y/o pegarla en el portapapeles (para luego pegarla en un procesador de textos o en un programa de dibujo, por ejemplo). Si se pega en el portapapeles se da la posibilidad opcional de abrir la imagen en MSPaint.
Además se puede elegir si se captura el cursor (tanto de ratón como de texto).
En el funcionamiento típicamente se elige método de captura y opciones y se activa. En ese momento el programa captura el HotKey para ImprPantalla, de tal manera que lo procesará el programa en vez de Windows. Según el modo capturará una cosa u otra cuando se pulse dicha tecla.
Para el modo objeto enseguida se va recuadrando el objeto bajo el cursor, que será la zona capturada cuando se presione ImprPant.
En el modo rectángulo cuando se presiona ImprPant primero se espera a que el usuario marque un rectángulo arrastrando con el ratón, después este rectángulo se puede mover y redimensionar con CTRL y los cursores (pulsando en pantalla sale una mini-ayuda, de ahí el cursor con interrogante). Para finalizar se pulsa INTRO y se captura el rectángulo especificado.
Al activar un modo se muestra en una etiqueta las instrucciones a seguir, son sencillas pero al principio mejor leerlo por lo de los modos Objeto/Rectángulo, que son un poco más elaborados.
Después de cada captura el modo queda activado, para volver a la funcionalidad de Windows hay que desactivarlo (o cerrar el programa). Antes se desactivaban solos después de la captura, pero el uso habitual me mostró que era más cómodo mantenerlo. En el método de Objeto sí lo desactivo porque es un modo "molesto" al estar recuadrando objetos todo el rato.
Una vez activado un modo aún se pueden cambiar las opciones de captura (excepto el método mismo, para eso primero hay que desactivar). La única excepción es cuando se está dibujando el rectángulo, una vez activado Y presionado ImprPant. En ese caso capturo el ratón para que no "toquitee" las ventanas mientras se dibuja (lo que hago es poner un GUI transparente delante del escritorio, que es el que recibe los clics)
Aquí tenéis el enlace para la descarga (Nota: ver más abajo para versiones más actualizadas):
http://www.mediafire.com/file/fi2injwyy ... urador.rar
ACTUALIZACIÓN 17/03/2010:
Adjunto el programa con la versión mejorada del diálogo de guardar. Ahora usa la extensión que se pone al archivo, o el tipo que se selecciona si no hay extensión. Por defecto es PNG, la más adecuada para "pantallazos" de programas. Por ejemplo para fotos es mejor JPG.
Los tipos de imagen que salen dependen de cada Windows, hay unos básicos pero hay programas que instalan más formatos, por ejemplo a mí me sale GIF (como podéis ver en una captura que pongo abajo en un comentario) pero creo que no viene directamente con Windows.
Aquí tenéis la descarga: En el código sólo cambia la función _GuardaBMPenPNG(), que ha crecido un poco, aquí la tenéis:
SALUDOS
Se trata del típico capturador de pantallas, que ha ido creciendo hasta tener una funcionalidad aceptable.
Surgió porque en el trabajo hacía muchas capturas de mapitas, copiaba con ImprPant de Windows, abría el Paint y pegaba, recortaba el trozo que quería... así que hice un script que automáticamente presionaba el ImprPant, abría el Paint y pegaba... y de esas cuatro líneas fui ampliando y ampliando y surgió esto.
Encontré por la web programas parecidos, en algunos casos bastante más complejos, pero quería algo compacto y con funcionalidad suficiente. AutoIt es ideal para hacer un programita distribuible en un único EXE, así que me hice mi versión.
La funcionalidad que ofrece es la siguiente:
5 métodos de captura: Toda la pantalla, Ventana activa, Cliente de la Ventana activa, Objeto (paneles, botones, etc) y Rectángulo marcado por el usuario.
En el modo Objeto se va recuadrando en tiempo real el objeto que será capturado.
En el modo Rectángulo sale una ventanita de zoom para ajustar exactamente la zona a capturar.
Como opciones de post-proceso está guardar la imagen como png u otros formatos registrados y/o pegarla en el portapapeles (para luego pegarla en un procesador de textos o en un programa de dibujo, por ejemplo). Si se pega en el portapapeles se da la posibilidad opcional de abrir la imagen en MSPaint.
Además se puede elegir si se captura el cursor (tanto de ratón como de texto).
En el funcionamiento típicamente se elige método de captura y opciones y se activa. En ese momento el programa captura el HotKey para ImprPantalla, de tal manera que lo procesará el programa en vez de Windows. Según el modo capturará una cosa u otra cuando se pulse dicha tecla.
Para el modo objeto enseguida se va recuadrando el objeto bajo el cursor, que será la zona capturada cuando se presione ImprPant.
En el modo rectángulo cuando se presiona ImprPant primero se espera a que el usuario marque un rectángulo arrastrando con el ratón, después este rectángulo se puede mover y redimensionar con CTRL y los cursores (pulsando en pantalla sale una mini-ayuda, de ahí el cursor con interrogante). Para finalizar se pulsa INTRO y se captura el rectángulo especificado.
Al activar un modo se muestra en una etiqueta las instrucciones a seguir, son sencillas pero al principio mejor leerlo por lo de los modos Objeto/Rectángulo, que son un poco más elaborados.
Después de cada captura el modo queda activado, para volver a la funcionalidad de Windows hay que desactivarlo (o cerrar el programa). Antes se desactivaban solos después de la captura, pero el uso habitual me mostró que era más cómodo mantenerlo. En el método de Objeto sí lo desactivo porque es un modo "molesto" al estar recuadrando objetos todo el rato.
Una vez activado un modo aún se pueden cambiar las opciones de captura (excepto el método mismo, para eso primero hay que desactivar). La única excepción es cuando se está dibujando el rectángulo, una vez activado Y presionado ImprPant. En ese caso capturo el ratón para que no "toquitee" las ventanas mientras se dibuja (lo que hago es poner un GUI transparente delante del escritorio, que es el que recibe los clics)
Aquí tenéis el enlace para la descarga (Nota: ver más abajo para versiones más actualizadas):
http://www.mediafire.com/file/fi2injwyy ... urador.rar
ACTUALIZACIÓN 17/03/2010:
Adjunto el programa con la versión mejorada del diálogo de guardar. Ahora usa la extensión que se pone al archivo, o el tipo que se selecciona si no hay extensión. Por defecto es PNG, la más adecuada para "pantallazos" de programas. Por ejemplo para fotos es mejor JPG.
Los tipos de imagen que salen dependen de cada Windows, hay unos básicos pero hay programas que instalan más formatos, por ejemplo a mí me sale GIF (como podéis ver en una captura que pongo abajo en un comentario) pero creo que no viene directamente con Windows.
Aquí tenéis la descarga: En el código sólo cambia la función _GuardaBMPenPNG(), que ha crecido un poco, aquí la tenéis:
Código: Seleccionar todo
Func _GuardaBMPenPNG($HBitmap)
; Averiguamos los coders de imágenes registrados en GDI+
_GDIPlus_Startup()
Local $coders = _GDIPlus_Encoders()
Local $filtros = "", $indicePNG, $nom, $extens
For $i = 1 To $coders[0][0]
$nom = $coders[$i][5]
$extens = $coders[$i][6]
If StringInStr($nom, "PNG", 2) <> 0 Then $indicePNG = $i
$filtros &= "Imagen " & $nom & " [" & $extens & "]" & " (" & $extens & ")|"
Next
; Quitamos última barra
$filtros = StringTrimRight($filtros,1)
;ConsoleWrite('$filtros = ' & $filtros & @crlf)
Local $flags = BitOr($OFN_DONTADDTORECENT, $OFN_OVERWRITEPROMPT, $OFN_PATHMUSTEXIST, $OFN_NOREADONLYRETURN)
Local $fich = _WinAPI_GetSaveFileName("Guardar en...", $filtros, @WorkingDir, "Captura", "", $indicePNG, $flags)
If $fich[0] = 0 Then
Local $sError = _WinAPI_CommDlgExtendedError()
If $sError = 0 Then
MsgBox(48, "Capturador", "Proceso cancelado. Imagen descartada.")
Else
MsgBox(48, "Capturador", "Error (" & @error & "): " & $sError)
EndIf
Else
Local $hImage = _GDIPlus_BitmapCreateFromHBITMAP($HBitmap)
_GDIPlus_ImageSaveToFile($hImage, $fich[1] & "\" & $fich[2])
If @error Then
MsgBox(48, "Capturador", 'Imagen "' & $fich[2] & '" no guardada:' & @LF & 'Extensión "' & _
_GDIPlus_ExtractFileExt($fich[2]) & '" reconocida por Windows pero no registrada como imagen.')
EndIf
_GDIPlus_ImageDispose($hImage)
EndIf
_GDIPlus_ShutDown ()
EndFunc