es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo enviar un bloque de texto línea por línea en un hotstring?

Tengo un bloque de texto que contiene varias líneas y quiero enviarlo a una aplicación de chat línea por línea. Quiero tener un procedimiento como este:

  1. Tecleo un disparador de atajo (digamos, hotstringtrigger), y AutoHotKey enviará la primera línea (el texto deberá permanecer en el cuadro de entrada de la aplicación de chat).
  2. Lo edito para adaptarlo a mis necesidades.
  3. Presiono Enter. La aplicación de chat enviará el texto y AutoHotKey enviará la siguiente línea.
  4. Regreso al paso 2 hasta que no queden más líneas.
  5. Después de eso, Enter funcionará de manera normal hasta que se vuelva a escribir hotstringtrigger.

Hasta ahora, mi intento es dividirlo en varios atajos de teclado expandidos:

:c
:*:hotstringtrigger::primera línea
:*:hotstringtrigger2::segunda línea
:*:hotstringtrigger3::tercera línea
...

Pero esto tiene algunas desventajas:
– Se usan muchos atajos de teclado.
– Requiere pulsaciones de teclas adicionales.

Esta página parece no cubrir esto: Hotstrings – Definición y Uso | AutoHotkey

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para lograr el procedimiento deseado, puedes utilizar la función StrSplit() en AutoHotKey para dividir el bloque de texto en un arreglo de líneas. Luego, puedes utilizar un bucle para iterar a través de cada elemento en el arreglo, enviando cada línea a la aplicación de chat una por una. Aquí hay una posible implementación:

    hotstringtrigger::
        ; Obtén el bloque de texto para enviar línea por línea
        text := "Lorem ipsum dolor sit amet,\nconsectetur adipiscing elit.\nSed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
    
        ; Divide el texto en un arreglo de líneas
        lines := StrSplit(text, "\n")
    
        ; Recorre las líneas y envíalas una por una
        for i, line in lines {
            SendInput % line
            ; Espera a que el usuario edite el texto antes de enviarlo
            Input, editedText
            SendInput % editedText
            SendInput {Enter}
        }
    
        ; Restablece el desencadenador de hotstring
        hotstringtriggerFlag := false
    return
    

    En este ejemplo, el desencadenador de hotstring es hotstringtrigger y cuando se activa, el script obtiene el bloque de texto y lo divide en un arreglo de líneas utilizando el carácter \n como delimitador. Luego, recorre cada línea en el arreglo y la envía a la aplicación de chat utilizando la función SendInput. El script espera a que el usuario edite el texto antes de enviarlo utilizando la función Input para capturar el texto editado. Por último, el script envía la pulsación de tecla Enter para enviar el texto editado y pasar a la siguiente línea.

    Ten en cuenta que esta implementación asume que el cuadro de entrada de la aplicación de chat ya está enfocado cuando se activa el desencadenador de hotstring. Si esto no es el caso, es posible que necesites agregar código adicional para cambiar a la ventana y/o cuadro de entrada de la aplicación de chat antes de enviar el texto.

Comments are closed.