Página 1 de 2

Hacer ScreenShoot y pasarla al ClipBoard

Publicado: 12 Jul 2012, 13:56
por rgracia

Código: Seleccionar todo

#include <ScreenCapture.au3>

; Capture full screen
_ScreenCapture_Capture(@MyDocumentsDir & "\GDIPlus_Image1.jpg")

ClipPut(....)      ; ni idea si es la función para este caso.

Partiendo de la base del ejemplo de la ayuda de AutoIt, estoy intentando pasarlo al Clipboard, he visto que se pueden pasar Ficheros, pero imágenes... Ni idea y me parece complicado.

A ver si me podéis ayudar.

Gracias,

Re: Hacer ScreenShoot y pasarla al ClipBoard

Publicado: 12 Jul 2012, 15:24
por arkcrew
Hola!

Eso es muy facil.

Simplemente crea una variable que contenga la ruta de la captura , por ejemplo $ruta
y usa la funcion _ClipPutFile

Algo asi

#include <Misc.au3>
$ruta = ....
_clipputfile($ruta)

Saludos!!

Re: Hacer ScreenShoot y pasarla al ClipBoard

Publicado: 13 Jul 2012, 01:38
por Chefito
Recuerda que también tienes la librería Clipboard.au3 (udf) para sacar un partido total al clipboard. Son todas las funciones que empiezan por _clipboard_ en la ayuda.

Saludos.

Re: Hacer ScreenShoot y pasarla al ClipBoard

Publicado: 13 Jul 2012, 10:41
por rgracia
arkcrew escribió:Hola!

Eso es muy facil.

Simplemente crea una variable que contenga la ruta de la captura , por ejemplo $ruta
y usa la funcion _ClipPutFile

Algo asi

#include <Misc.au3>
$ruta = ....
_clipputfile($ruta)

Saludos!!
Hola,

Gracias por la respuesta, pero aquí he de generar el archivo e indicarle la ruta.

A mi me gustaría que cuando hiciera pegar directamente se me visualizara la foto. Vamos como un print pantalla.
Chefito escribió:Recuerda que también tienes la librería Clipboard.au3 (udf) para sacar un partido total al clipboard. Son todas las funciones que empiezan por _clipboard_ en la ayuda.

Saludos.
La estoy mirando pero no la entiendo.

Saludos y gracias,

Re: Hacer ScreenShoot y pasarla al ClipBoard

Publicado: 13 Jul 2012, 18:54
por BasicOs
Hola
Una vez que tienes la ruta puedes abrirla desde dentro de autoit o bien llamando a la imagen con un run() ejecutando un programa externo q desees utilizar para verlas bien. Un visualizador como el paint irfanview o el mismo internet Explorer.
Busca run en la ayuda xra ver ejemplos
Salu22:)

Re: Hacer ScreenShoot y pasarla al ClipBoard

Publicado: 13 Jul 2012, 21:17
por rgracia
Primero de todo quiero pedir disculpas porque no controlo mucho y creo que me estoy volviendo pesado con la pregunta xD.
BasicOs escribió:Hola
Una vez que tienes la ruta puedes abrirla desde dentro de autoit o bien llamando a la imagen con un run() ejecutando un programa externo q desees utilizar para verlas bien. Un visualizador como el paint irfanview o el mismo internet Explorer.
Busca run en la ayuda xra ver ejemplos
Salu22:)
Yo lo que busco es que al hacer print pantalla y se me guarde en el clipboard como cuando haces screenshoot. Si lo guardo en un fichero ya no me interesa, porque simplemente es que en un momento en concreto se guarde una imagen y luego si la quiero usar apreto control+v en el paint o excel o word donde la necesite vamos.

¿O quizá estoy obligado a guardar la imagen en un fichero?

Código: Seleccionar todo

#include <ScreenCapture.au3>

$picture = _ScreenCapture_Capture() ;me da un valor que pone que es: "returns a handle to an HBITMAP" eing?

Msgbox(0,"",$picture)

clipput($picture) ;al clipboard no quiero pasar el valor sino que quiero pasar la imagen.
Disculpad molestias.

Re: Hacer ScreenShoot y pasarla al ClipBoard

Publicado: 14 Jul 2012, 15:16
por BasicOs
Hola, mira en los parámetros y en los resultados, esta función te guarda la imagen en disco, que puede estar bien para tener un cache o log de las imagenes que vas grabando, más simple.

Si quieres activar un printscreen simplemente send("{PRINTSCREEN}") que hace como si pulsaras las teclas, también hay muchas funciones que hacen cosas diferentes, por ejemplo lo q hacen programas que te capturan trozos de pantalla o dependiendo de las opciones del programa. :smt027 :smt027 También con send() puedes usar ctrl v y ctrl c

Luego con clipget() y clipput() puedes recuperar o llenar la memoria del clipboard.

Igual si publicas un código más completo con el resultado final de lo que haces podemos ver bien cual puede ser la mejor alternativa,

Salu22:)

Re: Hacer ScreenShoot y pasarla al ClipBoard

Publicado: 15 Jul 2012, 14:29
por rgracia
Hola de nuevo,

Código: Seleccionar todo

#include <ScreenCapture.au3>

$picture = _ScreenCapture_Capture() ;me da un valor que pone que es: "returns a handle to an HBITMAP" eing?

Msgbox(0,"",$picture)

clipput($picture) ;al clipboard no quiero pasar el valor sino que quiero pasar la imagen.
Con este código me gustaría que una vez hecho el sript, si quisiera fuera al paint y me copiara el la imagen de la pantalla. Pero sin embargo me copia el HBITMAP osease un string. Como lo podría hacer? Como se guarda en el clipboard una imagen? pero en formato imagen, no formato fichero.

Eso es lo que busco, quizá ya me habéis dado la respuesta y como soy tan tarugo no la he visto.

Gracias y gracias tm por la paciencia.

Re: Hacer ScreenShoot y pasarla al ClipBoard

Publicado: 16 Jul 2012, 00:50
por Chefito
BasicOs ya te ha dicho como hacerlo:
BasicOs escribió:Si quieres activar un printscreen simplemente send("{PRINTSCREEN}") que hace como si pulsaras las teclas
O sea, que este código:

Código: Seleccionar todo

send("{PRINTSCREEN}")
envía una pulsación de la tecla imprimir pantalla, la cual captura la pantalla completa y la almacena en el portapapeles.

Saludos y más atento a los post :smt002 .

Re: Hacer ScreenShoot y pasarla al ClipBoard

Publicado: 16 Jul 2012, 08:13
por rgracia
Chefito escribió:BasicOs ya te ha dicho como hacerlo:
BasicOs escribió:Si quieres activar un printscreen simplemente send("{PRINTSCREEN}") que hace como si pulsaras las teclas
O sea, que este código:

Código: Seleccionar todo

send("{PRINTSCREEN}")
envía una pulsación de la tecla imprimir pantalla, la cual captura la pantalla completa y la almacena en el portapapeles.

Saludos y más atento a los post :smt002 .
No es lo que busco.

Busco que me copie al clipboard la imagen. No quiero simular que aprieto printscreen. El motivo es que en realidad no busco la imagen completa busco un trozo. Pero insisto solo me gustaría saber como copiar una imagen al clipboard pero que cuando apriete control + v si estoy en el paint me pegue la imagen.

Sé poco de AutoIt, pero no tan poco hombre xD.

Un saludo,

Re: Hacer ScreenShoot y pasarla al ClipBoard

Publicado: 16 Jul 2012, 09:25
por joana
:smt021

Lo he intentado, parecía fácil pero el ClipPut veo que no sirve, manejando la librería Clipboard me imagino que se puede hacer, pero no sé hacerlo.

Re: Hacer ScreenShoot y pasarla al ClipBoard

Publicado: 16 Jul 2012, 09:53
por arkcrew
Buenas,

Que ganas de darle vueltas al tema, con mi primer.mensaje copias la imagen al clipboard. Pruebalo y veras. Luego solo tienes que abrir el paint con un Run o un ShellExecute y lanzar un Ctrl + V y te pegara la imagen que se copio al clipboard.
Asunto zanjado :)

Saludos!!

Re: Hacer ScreenShoot y pasarla al ClipBoard

Publicado: 16 Jul 2012, 13:22
por rgracia
arkcrew escribió:Buenas,

Que ganas de darle vueltas al tema, con mi primer.mensaje copias la imagen al clipboard. Pruebalo y veras. Luego solo tienes que abrir el paint con un Run o un ShellExecute y lanzar un Ctrl + V y te pegara la imagen que se copio al clipboard.
Asunto zanjado :)

Saludos!!
Previamente he probado lo que me dijiste y sirve, para tener en el clipboard archivos.

Código: Seleccionar todo

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

$ruta = "ruta file de la imagen"

_clipPutFile($ruta)
Pero esto me supone crear un archivo con la imagen y luego indicarle la ruta al clipboard.

Y a mi no me deja copiar al Paint o al excel después.

Yo lo que quiero es poner al clipboard una imagen que se pueda visualizar poniendo control + v abriendo programas como paint, excel...

Estoy seguro que soy yo que me explico mal, pero de todas maneras me facilitaría mucho si pusierais el código.

En el script no quiero poner como se abre el paint ni nada. Solo quiero el como copiar al portapapeles la imagen hecha con el ScreenCapture y a poder ser sin generar el fichero.

Voy a poner un chiste para quitar hierro al asunto que tiene que ver con esto.


Re: Hacer ScreenShoot y pasarla al ClipBoard

Publicado: 16 Jul 2012, 16:27
por Chefito
MMMmmmmm no te creas que aun lo tengo muy claro lo que quieres exactamente :smt005 . Que necesitas capturar? un trozo de la pantalla? un trozo de una ventana? una ventana entera? un control de una ventana? Piensa que con imprimir pantalla más algunas combinaciones de teclas puedes capturar una cosa u otra. Por que no te vale pulsar teclas?
Pon un ejemplo específico de lo que quieres capturar y lo entenderemos mejor.

Mira este programa hecho por el compañero Ximorro. Está muy bien y puedes capturar todo tipo de cosas. Analiza el código y utiliza lo que necesites.

http://www.emesn.com/autoitforum/viewto ... f=5&t=1848

Saludos.

Re: Hacer ScreenShoot y pasarla al ClipBoard

Publicado: 17 Jul 2012, 07:29
por rgracia
Chefito escribió:MMMmmmmm no te creas que aun lo tengo muy claro lo que quieres exactamente :smt005 . Que necesitas capturar? un trozo de la pantalla? un trozo de una ventana? una ventana entera? un control de una ventana? Piensa que con imprimir pantalla más algunas combinaciones de teclas puedes capturar una cosa u otra. Por que no te vale pulsar teclas?
Pon un ejemplo específico de lo que quieres capturar y lo entenderemos mejor.

Mira este programa hecho por el compañero Ximorro. Está muy bien y puedes capturar todo tipo de cosas. Analiza el código y utiliza lo que necesites.

http://www.emesn.com/autoitforum/viewto ... f=5&t=1848

Saludos.
Quiero dos madalenas :smt003

Estoy mirando el capturador es la lecheeee!!! Simplemente quiero como en una opción del capturador que se pueda enviar la imagen al portapapeles, pero sin generar el archivo.

Estoy buscando las funciones que lo hagan, pero me hago la piel buscando.

Si lo encuentro posteo, después del por culo que he dado es lo mínimo. :smt040

Llebo un ratito y ni tu idea... :smt017

Re: Hacer ScreenShoot y pasarla al ClipBoard

Publicado: 17 Jul 2012, 11:05
por arkcrew
Buenas


Yo sigo con dudas axerca de que se pueda copiar algo al portapapeles sin que exista como archivo en el disco duro.
Me baso es que cuando copiar un archivo y lo borras o mueves del origen windows tira error...

Porque te duele tanto generar el archivo? Generalo en temporales y luego borralo o algo asi.

Saludos!!

Re: Hacer ScreenShoot y pasarla al ClipBoard

Publicado: 17 Jul 2012, 12:22
por rgracia
La opción de ponerlo en un archivo temporal tm me gusta, pero menos. Es más a lo mejor es así como funciona el printscreen.

De todas formas tampoco he sabido hacer para que se me muestre la imagen con control+v usando "_ClipPutFile()". Creo que soy un negao :smt015

Muchas gracias por ser tan paciente xD

Re: Hacer ScreenShoot y pasarla al ClipBoard

Publicado: 18 Jul 2012, 10:13
por arkcrew
Buenas,

Puedes postear el codigo porfa?

Lo segundo,una vez abras paint usa un Send o la funcion ControlSend que seria mas eficaz ya que puedes especificar el titulo de la ventana y ahi lanzar el control.


Saludos!

Re: Hacer ScreenShoot y pasarla al ClipBoard

Publicado: 18 Jul 2012, 13:11
por rgracia

Código: Seleccionar todo

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

_ScreenCapture_Capture("pepe.png")

$ruta1 = @ScriptDir & "\pepe.png"

_clipPutFile($ruta1)
Este código super sencillo es utilizando un fichero cosa que no me gusta :smt022 .

Pero cuando hago control+v me genera el fichero, pero lo que busco es cuando abra el paint o el excel (fuera del script), me muestre la foto al apretar control+v.

:smt005 Veo que no va a salir lo de copiar imagen al clipboard :smt022

Re: Hacer ScreenShoot y pasarla al ClipBoard

Publicado: 18 Jul 2012, 15:36
por arkcrew
Hola,

Ese.codigo copia la imagen pero si bien cierto es que ni te deja pegarla al paint.

Revisa esto que me da a mi que te va a solucionar el problema ;)

Lee bien!

http://www.autoitscript.com/forum/topic ... clipboard/

Saludos!