FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Capturar evento "afterpaste" del portapapeles.
Hola a todos:
Aquí va un pequeño reto. ¿Es posible detectar que el contenido del portapapeles ha sido pegado en otra aplicación diferente a la nuestra (algo así como un evento afterpaste)? Saludos. Última edición por Jose_Pérez fecha: 12-01-2005 a las 09:11:39. |
#2
|
||||
|
||||
Cuando alguien pega algo en tu aplicación recibes el mensaje WM_PASTE. Podrías crear un manejador para este mensaje y así saber cuándo sucede.
// Saludos |
#3
|
|||
|
|||
Estimado Román:
Gracias por tu ayuda. La idea no es capturar el evento en mi aplicación, sino en otra ajena. Ya he editado el primer mensaje para que se entinda mejor. Saludos. Última edición por Jose_Pérez fecha: 12-01-2005 a las 09:12:46. |
#4
|
||||
|
||||
La tecnica consiste en hacer que nuestra aplicación reciba el mensaje cada vez que en windows se dibuje algo en el portapapeles. Tenemos que guardar en NextClipboard el siguiente programa que está monitoreando el portapapeles para informarle de que ha cambiado. Si queremos habilitar la capturación del portapapeles, solo tenemos que hacer: Frmppal.CapturarClipboard := True; Saludos Última edición por Lepe fecha: 13-01-2005 a las 12:07:06. |
#5
|
|||
|
|||
Estimado Lepe:
Sin haber probado tu código aún, quiero comentarte algunas cosillas. Antes de colgar mi pregunta, busqué por Internet y encontré bastante código parecido al tuyo. Lo que supongo que tú haces es generar un evento cuando se produce un cambio en el portapapelres, y lo que aquí se trata es de detectar que otra aplicación ha accedido al contenido del portapapeles (CTRL+V) y no a la inversa. Obviamente, en este caso no se produce el evento deseado, porque el contenido del portapapeles no ha sufrido cambios, ¿o me equivoco? Y otra cosa, no consigo entender que función tiene el procedimiento SetClpCapturado(const Value: Boolean); ¿Desde donde se llama a este procedimiento? Saludos y gracias. |
#6
|
||||
|
||||
Pues tienes toda la razon en la primera afirmación.
La unica forma que se me ocurre es hacer un hook de teclado para las teclas ctrl+v y shift+insert que son las utilizadas para pegar. Esto tiene como fallo que si un programa no implementa teclas rápidas para pegar, entonces no lo detectarás. Busca en el foro por Hook teclado. En cuanto a la segunda pregunta, he editado el mensaje para añadir lo que falta,fue un fallo de copy and paste. Saludos |
|
|
|