esperar al copy Topic is solved

Esta sección es para preguntas sobre programación/scripting usando AutoHotkey.

Moderator: Flipeador

Herchi
Posts: 27
Joined: 07 Mar 2018, 08:19

esperar al copy

Post by Herchi » 11 Jun 2021, 05:05

buenas gente. tengo el siguiente código

Code: Select all

    portapapeles := Clipboard
    Send, ^c                ; seleccionado -> portapapeles
    Sleep, 100             ; esperar, a veces no copia (con 10 no copia)
    ;ClipWait                ; Wait for the clipboard to contain text.
    texto := ClipBoard
    pintarMensaje("Investigando móvil " . texto)
    url := "https://www.milanuncios.com/anuncios/" .  texto
    Run, %url%
    Clipboard := portapapeles
Sin el Sleep a veces no copia como debe ser y vi por algún lado el truquito de esperar al pc a copiar. Pensaba que la opción elegante sería usar en su lugar ClipWait pero el resultado es mucho peor. Hay que seguir con la "ñapa" de esperar milisegundos o hay algo más decente?

el código es muy sencillo. Quiero que, sin perder lo que tenga el portapapeles, copie el nº y lo busque en milAnuncios. pintarMensaje lo pinta en pantalla, no tiene nada de problemático.

Gracias

w0z
Posts: 230
Joined: 19 Jun 2014, 08:21

Re: esperar al copy  Topic is solved

Post by w0z » 12 Jun 2021, 08:31

ejemplo de Help
https://www.autohotkey.com/docs/commands/ClipWait.htm

Code: Select all

F1::
	portapapeles := Clipboard
	clipboard := "" ; Empty the clipboard
	Send, ^c                ; seleccionado -> portapapeles
	ClipWait,1                ; Wait for the clipboard to contain text.
	if ErrorLevel
	{
	    MsgBox, The attempt to copy text onto the clipboard failed.
	    return
	}

	texto := ClipBoard
	; pintarMensaje("Investigando móvil " . texto)
	url := "https://www.milanuncios.com/anuncios/" .  texto
	MsgBox, % url
	; Run, %url%
	Clipboard := portapapeles
	MsgBox, % Clipboard
	; portapapeles := ""   ; Free the memory in case the clipboard was very large.
Return
If I was helpful consider Donate me. :beer: , plz :D

Herchi
Posts: 27
Joined: 07 Mar 2018, 08:19

Re: esperar al copy

Post by Herchi » 17 Jun 2021, 07:02

hay veces que no me lo copia con el "clipwait, 1" y se queda con el valor anterior. En cambio el Sleep funciona en el 99% de las veces. Cuando falla creo que es porque voy justito de ram y debo esperar más por la cpu.

sofista
Posts: 645
Joined: 24 Feb 2020, 13:59
Location: Buenos Aires

Re: esperar al copy

Post by sofista » 17 Jun 2021, 08:53

Herchi wrote:
17 Jun 2021, 07:02
hay veces que no me lo copia con el "clipwait, 1" y se queda con el valor anterior...
Es cierto que a primera vista es más cómodo o fácil usar Sleep, pero para manejar el portapapeles es mejor Clipwait. Pero la condición fundamental para que Clipwait funcione correctamente es que antes de invocarlo el portapapeles tiene que estar en blanco, tal como lo hizo w0z en el texto de muestra. De tus palabras "se queda con el valor anterior" infiero que esa condición no se había cumplido.

También se puede invocar Clipwait sin un parámetro si uno necesita ser un poco más específico con el contenido del portapapeles. Detalles en el Help.

safetycar
Posts: 435
Joined: 12 Aug 2017, 04:27

Re: esperar al copy

Post by safetycar » 17 Jun 2021, 13:18

Herchi wrote:
17 Jun 2021, 07:02
hay veces que no me lo copia con el "clipwait, 1" y se queda con el valor anterior. En cambio el Sleep funciona en el 99% de las veces. Cuando falla creo que es porque voy justito de ram y debo esperar más por la cpu.
Yo alguna vez he optado por la fuerza bruta :roll: ...

Code: Select all

	while (Clipboard!="") {
		Clipboard := "" ; Empty the clipboard
		Sleep, 50
	}
Aunque parece raro, que recuerde me funciono bien.
Creo que la razón es que la variable clipboard es algo peculiar y al leerla actua más bien como una funcion GetClipboard()

Herchi
Posts: 27
Joined: 07 Mar 2018, 08:19

Re: esperar al copy

Post by Herchi » 18 Jun 2021, 07:56

Code: Select all

; ir al Jira con la incidencia seleccionada
+!^J:: ; Alt Gr + Shift + J
    portapapelesAntes := Clipboard
    clipboard := ""             ; vaciar el portapapeles
    Send, ^c                    ; seleccionado -> portapapeles
    ClipWait, 1                 ; esperar a que copie
    pintarMensaje("Yendo a la incidencia " . ClipBoard)
    url := "https://xxxx:8443/browse/MANTH-" . ClipBoard
    Run, %url%
    Clipboard := portapapelesAntes
Return
cierto, con esto parece que va. por ahora jeje. :D gracias

Post Reply

Return to “Pedir Ayuda”