Variabile comune per piu programmi

di il
4 risposte

Variabile comune per piu programmi

Vorrei trovare una soluzione per utilizzare una variabile che possa essere comune a vari script di autohotkey, in modo che possano coordinarsi tra di loro.
Allo stato attuale mi limito a usare un files contenente il valore e alla sua continua lettura e scrittura.
Questa soluzione vorrei eliminarla perchè lenta e non ottimale per il mio HD.
Sarei in grado di utilizzare la clipboard per passare i dati. Ma poi con un ctrl+c nascerebbero casini.
Ho sbattuto la testa sulle variabili d'ambiente, ma non sono riuscito a tirarci fuori niente.

Io vorrei che i vari script valorizzassero una variabile priorita a 1quando stanno facendo cose"importanti" in modo che gli altri script durante la loro esecuzione vadano a leggere tale variabile, e in caso sia a 1 si mettano in attesa del cambio del valore della variabile.

Sapete darmi qualche consiglio

Grazie Ciao

4 Risposte

  • Re: Variabile comune per piu programmi

    Non conosco bene gli script che utilizzi, però penso che una buona soluzione la puoi trovare con una progarmmazione multithread, avrai variabili comuni a tutti i thread e se hai necessità di sincronizzazione, i semafori possono essere la giusta soluzione.
  • Re: Variabile comune per piu programmi

    Avere piu thread per script su autohotkei è possibile, ma non vengono gestiti contemporaneamente.
    Basta pero un thread di controllo che abbia la funzione di dare il controllo dei vari thread. (cosa che si puo fare)
    Si se unissi tutti i vari script- thread in uno unico, potrei avere le variabili in comune. Pero a questa possiblita preferisco la lettura del file-variabile. Mi permette di creare tanti altri script autonomi senza dover avere un enorme dinosauro da modificare ogni volta.

    Chiedo invece, avendo la possibilita di chiamare le dll, che si possa avere una dll che mi possa valorizzare un'area di memoria con una variabile booleana, indipendente dal programma che l'ha chiamata? C'è gia una cosa del genere pronta?
    Mi servirebbe la funzione di lettura e scrittura.

    Riguardo la clipboard, quando ci metto qualcosa dentro, si cancella quello che c'era prima? Si puo avere un'area "riservata" per la variabile che mi serve?

    Grazie a tutti
    Ciao
  • Re: Variabile comune per piu programmi

    dnoc ha scritto:


    Ho sbattuto la testa sulle variabili d'ambiente, ma non sono riuscito a tirarci fuori niente.
    Invece potrebbe essere la soluzione migliore, a mio avviso lo è dato che sono accessibili da qualunque linguaggio di programmazione.
  • Re: Variabile comune per piu programmi

    Potete aiutarmi con le variabili d'ambiente, ho fatto un'infinita di prove, ma dai risutati non ci ho capito nulla. Mi sono trovato le stesse variabili d'ambiente con valori diverse a seconda della finestra dos da cui lanciavo il commando set o conset. Poi con conset ho un'infinità di opzioni, ho /t /u o /m

    tra le varie prove per indicare cosa non mi torna
    2 script
    avvio il primo

    1::
    Run %comspec% /c "conset /u priorita=1"
    sleep 1000
    EnvGet, risultato, priorita
    msgbox % risultato
    return
    2::
    Run %comspec% /c "conset /u priorita=2"
    sleep 1000
    EnvGet, risultato, priorita
    msgbox % risultato
    return
    3::
    Run %comspec% /c "conset /u priorita="
    sleep 1000
    EnvGet, risultato, priorita
    msgbox % risultato
    return
    4::
    EnvGet, risultato, priorita
    msgbox % risultato
    return
    esc::
    exitapp

    se premo un tasto da 1 a 4 esegue il contenuto del blocco
    premo uno e mi da come risultato 1
    se premo 4 da 1 come deve

    premo 2 mi da sempre risultato 1 e non 2 come mi aspetterei.

    Se a questo punto avvio il secondo script

    EnvGet, risultato, priorita
    msgbox % risultato
    mi da il valore 2

    In pratica mi sembra che legga la variabile ambiente all'avvio del programma, ma se questa cambia e lo script e in esecuzione continua a leggermi il valore che ha trovato all'avvio.

    Non riesco a capire come funzionano.
    in Autohotkey avrei la funzione di scrittura (EnvSet)della variabile d'ambiente, ma poi quando vado a leggerla da un altro script, risulta inesistente. All'interno dello script da cui la valorizzo invece con la funzione di lettura EnvGet, nessun problema.
    Spero di essermi spiegato. La cosa è abbastanza incasinata.

    Se potete darmi qualche consiglio
    Ciao e grazie
Devi accedere o registrarti per scrivere nel forum
4 risposte