como crear un script que selecione un determinado texto de una lista y lo pegue

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

Moderator: Flipeador

effect
Posts: 8
Joined: 27 Mar 2019, 23:07

como crear un script que selecione un determinado texto de una lista y lo pegue

28 Mar 2019, 00:54

mi problema es el siguiente tengo este script

Code: Select all

:*?:/:: ;(ten 860072172)(lan 890900120)(rot 900481586)(uts 860068121)
        ;(lhs 860020240)
 Loop 1
{
Send, {TAB}
Send, {C 5}
Send, {TAB}
Send, 890900120
Send, {TAB}
Send, 890900120
Send, {Down}
Send, {TAB}
Send, {Down 4}	;nuevos1 usados2	suvenir3 valle4 tecota5
Send, {TAB}
Send, {TAB}
Send, FE45004
}
como pueden lo tengo configurado para que al presionar / copie los datos en un formulario el cual pide varios datos en varios renglones del formulario en uno de estos renglones me pide un numero de 9 dígitos lo que yo quiero es que con tan solo colocar tres iniciales como por ejemplo el del numero 890900120 las iniciales son "LAN" quiero que al escribir "lan" el automáticamente escriba 890900120 pero que sea totalmente configurable es decir que por ejemplo yo escriba "ten" y automáticamente escriba en el formulario 860072172
asu vez en uno de estos renglones me pide que especifique para donde va el producto en este renglón también quiero que se configurable es decir que yo pueda escoger rápidamente a que sitio mandarlo de esta selección

ante todo muchísimas gracias
effect
Posts: 8
Joined: 27 Mar 2019, 23:07

Re: como crear un script que selecione un determinado texto de una lista y lo pegue

02 Apr 2019, 23:11

por favor amigos mios alguien que pueda ayudarme no soy el tipico pregunton he investigado mucho pero no logro una respuesta que solucione mi problema
devnullsp
Posts: 73
Joined: 21 Nov 2017, 09:00

Re: como crear un script que selecione un determinado texto de una lista y lo pegue

04 Apr 2019, 17:27

Perdona, pero no lo entiendo.
en uno de estos renglones me pide un numero de 9 dígitos lo que yo quiero es que con tan solo colocar tres iniciales como por ejemplo el del numero 890900120 las iniciales son "LAN" quiero que al escribir "lan" el automáticamente escriba 890900120 pero que sea totalmente configurable es decir que por ejemplo yo escriba "ten" y automáticamente escriba en el formulario 860072172
Veras, cuando dices "quiero que con tal solo colocar tres inciales...." cuando dices "quiereo" te refieres a tu tecleando o a la macro. O sea que no se si estas hablando de tu persona o del programa en este párrafo.

Un Saludo
effect
Posts: 8
Joined: 27 Mar 2019, 23:07

Re: como crear un script que selecione un determinado texto de una lista y lo pegue

07 Apr 2019, 00:10

devnullsp wrote:
04 Apr 2019, 17:27
Perdona, pero no lo entiendo.
en uno de estos renglones me pide un numero de 9 dígitos lo que yo quiero es que con tan solo colocar tres iniciales como por ejemplo el del numero 890900120 las iniciales son "LAN" quiero que al escribir "lan" el automáticamente escriba 890900120 pero que sea totalmente configurable es decir que por ejemplo yo escriba "ten" y automáticamente escriba en el formulario 860072172
Veras, cuando dices "quiero que con tal solo colocar tres inciales...." cuando dices "quiereo" te refieres a tu tecleando o a la macro. O sea que no se si estas hablando de tu persona o del programa en este párrafo.

Un Saludo

MUCHISIMAS gracias por tomarte la molestia de responderme eres muy amable te lo voy a explicar de manera simple por que he venido pensando que quizás no formule mi duda de manera correcta si a eso le sumo que no tengo una mano si no parte de ella, no sabes lo bien que me a hecho este programa, trabajo como auxiliar de archivo y gracias a mi rapidez radicando FACTURAS en el sistema he logrado tener un mejor puesto CLARO que lo de la rapidez no es por mi por que obviamente no tengo 2 manos funcionales si no una buena y la otra nada bien el punto es que gracias a mi adorado AHK he logrado un mejor puesto en mi trabajo pero ahora tengo un dilema y es algo que estoy seguro puedo solucionar con un impulso no quiero que me resuelvas la vida pero si que me des un impulso de conocimientos que luego yo resuelvo el resto mi dilema es este

lo voy a explicar de una manera sencilla

digamos que tengo ROL, CASSIDY, TERNOS, LULOS, EMXIN, CALLER, LIGHT, como nombre de proveedores
y en un formulario de registro el cual uso en mi trabajo tengo que registra cierta cantidad de números de registros los cuales son unicos para cada uno, digamos que tengo esta 123456789 y le pertenece a TERNOS pero tengo que indicarle al programa de que proveedor es este registo el cual es de TERNOS obviamente uno va renglón por renglón llenando los datos y se hace pero toma mucho tiempo es claro que gracias a mi adorado AHK y a este gran FORO he logrado muchísimas cosas por mi supuesta velocidad la cual en ocaciones los pone a pensar por el hecho de mi condición de mi mano pero en fin continuemos, lo que quiero es que debo estudiar es decir en los comando de AHK para indicarle al SCRIPT que cuando yo escriba las 3 inicales de digamos TERNOS es decir al escribir TER en ese reglón me escriba el numero de registro el cual es 123456789, se muy bien que se logra ese efecto con los hotgtrings pero lo que quiero es configurar en una cadena de variables por que son muchísimos proveedores y quiero registrarlos a todos y llamar sus códigos de registros simplemente tecleando sus primeras 3 iniciales y que ellos me devuelvan su numero de registro único del proveedor solo quiero saber que puedo hacer alli

por favor ayudame amigo
devnullsp
Posts: 73
Joined: 21 Nov 2017, 09:00

Re: como crear un script que selecione un determinado texto de una lista y lo pegue

07 Apr 2019, 05:43

ok, yo estoy especializandome en eficientar puestos de trabajo con Autohotkey en una empresa de backoffice, o sea, mas o menos lo que tu haces :).

Supongo que el problema es teclar todos no?
se muy bien que se logra ese efecto con los hotgtrings pero lo que quiero es configurar en una cadena de variables por que son muchísimos proveedores y quiero registrarlos a todos y llamar sus códigos de registros simplemente tecleando sus primeras 3 iniciales
ok, bueno, supongo que no quieres estar haciendo la definición de las hotstrings, te propongo algo, hay varias soluciones, pero esta me gusta por varias razones:

Code: Select all

; creo un objeto que sera el diccionario
	p:={}
; Asigno los pares clave valor
	p.tar := "121233322"
	p.lac := "8872132342"
	p.opc := "123132213"
	p.it  := "243224123"
; ahora los proceso
	for k,v in p
	    Hotstring(":*:" k,v)
esto lo hace directamente borrando lo tecleado, pero supongo que ya te habrás empapado de las hotstring... :thumbup:

Si te es más facil no necesitas hacer todas de 3 puedes poner lo que quieras, pero ojo que mientras está activo te va ha escribir en cualquier sitio que lo teclees....

Si quieres algo más complejo ya tendriamos que ver como se llama tu aplicación cliente o el tipo de campos que utilizas o cosas así para eficientar el caso y que se haga sólo en el momento adecuado.

Un Saludo,
devnullsp
Posts: 73
Joined: 21 Nov 2017, 09:00

Re: como crear un script que selecione un determinado texto de una lista y lo pegue

07 Apr 2019, 13:53

Hummm

Le he dado una vuelta y no me acaba de convencer o sí, depende.

Hombre no sé lo eficiente que son las hotstring, habria que verlo, pero supongamos que tienes cientos de opciones.... no parece muy viable generar una hotstring por cada :roll: :?

Así que le he dado un vuelta mas sobre todo por buscar como se haria de otra forma:

En este ejemplo uso una única HotString que es el disparador de que quieres introducir una clave a sustituir. Cuando esto ocurre el lee tres caracteres y si no pasas de 5 seg en introducirlo (es para que se resetee sino) te convierte el valor en el introducido.

Yo he puesto como hotstring la / que no se que tal se te da, pero lo puedes cambiar por la que quieras. Si piensas en poner otras longitudes por ejemplo de 1 o 2 caracteres en vez de 3, el espera hasta que hayas pulsado un punto. Así, resumiendo seria.

Una vez pulsada / :
- Si no se completa en 5 seg se cancela la transformación
- Si se completa la longitud pedida (3) se procesa y si existe se sustituye por la clave dada
- Si se pulsa . se considera terminada y si existe la clave se sustituye por su valor

Veamos como, por supuesto sigo usando un diccionario para contener todo, pero imaginate que donde es un diccionario podria ser incluso una query a una b.d.

Ten en cuenta que yo borro todo lo innecesario usando backspace Pero puedes quitar b0 y asi se limpia la barra, pero yo prefiero dejarla para que se vea el comienzo del comando....

Espero que pueda serte de ejemplo. Pero por supuesto el otro ejemplo es más sencillo aunque no tan eficiente.... :dance:

Un Saludo

Code: Select all


; creo un objeto que sera el diccionario
	p:={}
; Asigno los pares clave valor
	p.tar := "121233322"
	p.lac := "8872132342"
	p.opc := "123132213"
	p.it  := "243224123"
:b0*:/::
    Input, texto, L3 V T5, .
    if(ErrorLevel = "Timeout")
        return
    if(p[texto] = "")
        return
    if(Errorlevel = "EndKey:.")
        send {BackSpace}
    loop % strLen(texto)
        send {BackSpace}
    send {BackSpace}        
    send % p[texto]
return 

effect
Posts: 8
Joined: 27 Mar 2019, 23:07

Re: como crear un script que selecione un determinado texto de una lista y lo pegue

08 Apr 2019, 00:26

Dios te bendiga amigo mio la verdad MUCHAS gracias a sido muy pero muy agradable contar con tu ayuda la verdad eres genial he analizado tu script y ufffffffffff se ve genial pero no logro hacerlo funcionar :thumbup: :thumbup: :thumbup: obviamente no se si es por falta de experiencia la verdad soy novato en todo esto pero me EMOCIONA aprender y yo se que dije que solo necesitaba una empujón y me alegra tu ayuda hora bien me encantaría saber de tu trabajo y de donde eres la verdad este mundo de GESTIÓN DOCUMENTAL es muy interesante de verdad me gustaría saber mas del termino BACKOFFICE se oyeeeeeeee muy interesante
devnullsp
Posts: 73
Joined: 21 Nov 2017, 09:00

Re: como crear un script que selecione un determinado texto de una lista y lo pegue

08 Apr 2019, 08:26

cual no funciona?
he probado los dos y van bien.... que raro...
effect
Posts: 8
Joined: 27 Mar 2019, 23:07

Re: como crear un script que selecione un determinado texto de una lista y lo pegue

08 Apr 2019, 19:32

muchas gracias por responderme amigo devnullsp jajaajaja que nickname tan peculiar, ummmm creo saber cual es el problema 1- puede ser que tu script sea muy avanzado para mi poca experiencia en su uso ojooo no es sarcasmo y la otra es que versión de AHK estas usando yo uso la primera versión y hasta hace 2 días me entere que existía una v2 jajajajaja gracias por tomarte la molestia de ayudarme amigo mio eres una buena persona
devnullsp
Posts: 73
Joined: 21 Nov 2017, 09:00

Re: como crear un script que selecione un determinado texto de una lista y lo pegue

09 Apr 2019, 12:49

Para eso es este foro, no hay problema...
De todas formas me gustaria resolver el problema que tengas, y no, este script esta hecho con la 1.x no con la 2 aunque supongo que igual funciona, no le he dedicado tiempo a la v2.

Aún así estube mirando el tema de los hotstring por si veia si era muy costoso hacerlo usando una buena cantidad de ellos y vi que tenian un diccionario corrector de los principales errores que se ejecutan escribiendo en ingles y sus correcciones (está en la propia página del hotstring del manual) y vi que eran decenas y decenas, así que tampoco tendria que preocuparte el poner muchas hotstring....

Por cierto cuantos codigos tienes para convertir?

Un Saludo
effect
Posts: 8
Joined: 27 Mar 2019, 23:07

Re: como crear un script que selecione un determinado texto de una lista y lo pegue

10 Apr 2019, 05:28

muchas gracias por tu ayuda hoy probé usar los hotstring por cada código pero no es muy viable y si me preguntas cuantos registros hay de proveedor creo que aquí ahí alrededor de 860 proveedores sin contar los del exterior por ende no sabría como aplicar tantos hotstring de una manera dinámica por favor amigo disculpa si no colaboro tomando tus ideas en el apto pero la verdad verdad no tengo mucha experiencia programando me gustaría saber con toda la humildad del mundo me podrías decir como funcionan es decir cuando el script esta cargado me refiero a los 2 scripts que me enviaste como los activos o su uso yo cargo el script pero no se como usarlo o configurarlo me podrías decir o enseñar con mucho detalle por favor mil disculpas por mi ignorancia por favor ayudame a comprender y usar tu script amigo mio
devnullsp
Posts: 73
Joined: 21 Nov 2017, 09:00

Re: como crear un script que selecione un determinado texto de una lista y lo pegue

10 Apr 2019, 14:08

hombre..... usar 860 acronimos.... así a bote pronto no lo veo, no por nada, sino como te vas ha acordar de todos....
No te vendría mejor, digo yo... una ventanita que te permitiese buscar un codigo por el texto del proveedor, por ejemplo una palabra o un trozo y te lo pegase o copiase al portapapeles, así mientras buscas que te lo ponga en una lista para que puedas seleccionar el que quieras y te lo pegue....

Por que hoy en dia qué haces? buscas en una hoja de cálculo? miras en un fichero de texto? vamos que para encontrar el codigo del proveedor algo harás hoy por hoy.

No se si me he explicado.

Con respecto a mis scripts ambos funcionan basándose en un diccionario, por lo que para adaptarlos a tus necesidades lo que tienes que hacer es rellenarlo, ¿Cómo? pues verás imaginate que tu tienes un proveedor "proveedor fulano" con un codigo "99887766" si queremos usar como acronimo "pf" tendrias que poner

p.pf := "99887766"

y así con todos los proveedores.

El primer script lo que hace es que por cada uno de estas entradas en el diccionario genera una hotstring dinámicamente.
En el segundo script, se genera solo una hotstring ("/") con lo que a continuación tecleas el acronimo y el lo sustitye.

Ambos scripts los puedes ejecutar directamente tal cual, son funcionales.
en el primero prueba a teclar cualquier acronimo, o sea, el trozo de texto de despues de "p." que hay definidos, por ejemplo teclea "tar" y el solo te lo cambia.
En el segundo prueba a teclar "/tar" estando en el notepad o donde tu quieras.

Así que lo único que hay que rellenar es:

Code: Select all

p.tar := "121233322"
p.lac := "8872132342"
p.opc := "123132213"
p.it  := "243224123"
Cambiándolos por los valores que tu quieras, tanto de acronimo como de numeros.

Pero para 860 incluso para 100 veo mejor otra solución, como la de una ventana buscadora, por que supongo que la aplicación que teneis no permite buscarlos....

Un Saludo,
effect
Posts: 8
Joined: 27 Mar 2019, 23:07

Re: como crear un script que selecione un determinado texto de una lista y lo pegue

10 Apr 2019, 20:59

muchas gracias por tomarte tu tiempo en responderme y perder tu tiempo en mis problemas amigo te pido mil disculpas pero no entiendo el tema del diccionario y obviamente entiendo eluso del hotstring es mas cuando lo vi la primera vez que lo subiste pense que era tal cual como habias explicado pero digamos que tu script por ejemplo el primero

; creo un objeto que sera el diccionario
p:={}
; Asigno los pares clave valor
p.tar := "121233322"
p.lac := "8872132342"
p.opc := "123132213"
p.it := "243224123"
; ahora los proceso
for k,v in p
Hotstring(":*:" k,v)

es claro que yo entendi su uso a penas lo vi pero no entiendo eso de crear un dicionario o CREAR UN OBJETO QUE SERA MI DICCIONARIO
QUIERE DECIR que tengo que crear otro script donde solamente agregare los numeros de facturas y en el otro script llamare a cada provedor con tan solo escribir las primeras 3 letras de cada provedor es decir tal cual como ya lo mencionaste
lamento ocacionarte tantos problemas y ser tan bruto de no entender tu explicacion pero tengo la gran duda sobre el tema de CREAR UN OBJETO QUE ME SIRBA COMO DICCIONARIO ahi es donde tengo la duda disculpa mi torpeza y humildemente pido de tu ayuda amigo mio me llamo juan carlos
devnullsp
Posts: 73
Joined: 21 Nov 2017, 09:00

Re: como crear un script que selecione un determinado texto de una lista y lo pegue

11 Apr 2019, 02:21

Puedes hacerme el favor de ponerme dos ejemplos de pares CODIGO - CLAVE?

Y deja de disculparte, que para eso es esto.... ;)

Gracias,
effect
Posts: 8
Joined: 27 Mar 2019, 23:07

Re: como crear un script que selecione un determinado texto de una lista y lo pegue

14 Apr 2019, 17:50

hola hermanito como estas la verdad no entiendo lo que me preguntas
tretri
Posts: 2
Joined: 25 Oct 2020, 00:35

Re: como crear un script que selecione un determinado texto de una lista y lo pegue

28 Oct 2020, 01:50

al parecer si está complicado esto de los formularios, pero yo te aconsejo usar algo mejor y es un gravador de acciones, el programa se llama plai-static. lo pones a gravar y por lo menos te podría servir para aquellas acciones repetidas, como copear y pegar.

Return to “Pedir Ayuda”

Who is online

Users browsing this forum: No registered users and 40 guests