A proposito di AutoHotKey

AutoHotkey è un software gratuito, open source, sia per uso personale che commerciale, che permette di creare non solo piccoli scripts interpretati, funzionanti cioè in quel PC senza bisogno di essere compilati, per automatizzare funzioni di Windows o di altri programmi, ma permette anche di costruire programmi di una certa complessità, attraverso un linguaggio simile ad un Basic avanzato.
In quest'ultimo caso può essere comodo compilare lo script usando il compilatore allegato nel pacchetto software, in modo da trasformare lo script in un programma eseguibile ed autonomo funzionante in stand-alone anche in PC dove non sia installato AutoHotkey.

Se usato al pieno delle sue funzionalità può essere considerato, a mio avviso, un vero linguaggio di programmazione che, eventualmente con alcune escamotages, può creare programmi dall'aspetto veramente professionale.


Scaricabile gratuitamente dal sito http://www.autohotkey.com/ si può iniziare ad usare subito utilizzando come editor anche il semplice Notepad di Windows, salvando lo script aggiungendo la desinenza ".ahk" avendo l'accortezza di selezionare, nel menù a discesa "salva come", la voce "tutti i file" per evitare l'apposizione della desinenza ".txt" al file che si andrà a salvare.


Successivamente doppio click e lo script verrà eseguito. Dopo l'eventuale debugging si potrà compilare cliccando con il tasto destro del mouse sull'icona dello script appena creato scegliendo la voce "compile script"

Di seguito alcuni esempi di script che possono essere copiati ed incollati, uno alla volta, direttamente sul notepad e fatti partire per dimostrazione, oppure scaricati direttamente dai seguenti link del mio Google drive Esempio_1 Esempio_2 Esempio_3:

;Esempio 1
#SingleInstance, force ;...permette solo una istanza dello script alla volta, cioè se si fa ripartire lo script termina prima quello precedente
MsgBox, Hallo World    ;...Apre una finestra di messaggio con la scritta Hallo World ed il pulsante di ok
ExitApp                ;...Termina lo script

;Esempio 2
#NoEnv                        ;...Consigliato per le prestazioni e la compatibilità con le future versioni AutoHotkey.
SendMode Input                ;...Consigliato per nuovi script grazie alla sua velocità e affidabilità superiori.
SetWorkingDir %A_ScriptDir%   ;...assicura una directory di partenza coerente.
#SingleInstance, force        ;...permette solo una istanza dello script alla volta
Gui, Add, Text, x41 y32 w390 h40 , Scrivere qualcosa ;...scrive testo in una GUI (finestra)
Gui, Add, Edit, x41 y72 w390 h40 v_variabile         ;...riquadro editabile dall'utente, v_variabile è la variabile che conterrà l'input dell'utente
Gui, Add, Button, x331 y152 w100 h30 , Submit        ;...aggiunge un pulsante in una GUI
Gui, Show, x333 y298 h226 w480, Finestra esempio     ;...mostra la finestra sul monitor
Return                                               ;...Fine della sezione di autoesecuzione. Lo script è inattivo fino a quando l'utente fa qualcosa.
GuiClose:                              ;...sub menù richiamato se si chiude la finestra
ExitApp                                ;...esce dall'applicazione
ButtonSubmit:                          ;...sub menù richiamato se si preme il pulsante ok
Gui, Submit                            ;...salva le variabili introdotte nel form Edit della GUI
MsgBox, Hai scritto: "%_variabile%"    ;...Apre una finestra di messaggio con la scritta inserita nel form Edit
ExitApp

;Esempio 3
#NoEnv                        ;...Consigliato per le prestazioni e la compatibilità con le future versioni AutoHotkey.
SendMode Input                ;...Consigliato per nuovi script grazie alla sua velocità e affidabilità superiori.
SetWorkingDir %A_ScriptDir%   ;...assicura una directory di partenza coerente.
#SingleInstance, force        ;...permette solo una istanza dello script alla volta
;
Gui, Add, Text, x41 y32 w390 h40 , Scrivere qualcosa da stampare ;...scrive testo in una GUI (finestra)
Gui, Add, Edit, x41 y72 w390 h60 v_variabile         ;...riquadro editabile dall'utente, v_variabile è la variabile che conterrà l'input dell'utente
Gui, Add, Button, x40 y152 w100 h30 , Preview        ;...aggiunge un pulsante nella GUI
Gui, Add, Button, x185 y152 w100 h30 , Stampa        ;...aggiunge un pulsante nella GUI
Gui, Add, Button, x330 y152 w100 h30 , Uscita        ;...aggiunge un pulsante nella GUI
Gui, Show, h226 w480, Finestra esempio               ;...rende visibile la finestra
Return                                               ;...fine di questa sezione di autoesecuzione. Lo script è inattivo fino a quando l'utente farà qualcosa.
;
GuiClose:                                            ;...sub richiamata se si chiude la finestra
ExitApp                                              ;...esce dall'applicazione
;
ButtonUscita:                                        ;...sub richiamata se si preme il pulsante Uscita
ExitApp                                              ;...esce dall'applicazione
;
ButtonPreview:                                       ;...sub richiamata se si preme il pulsante preview
Gui, Submit, nohide                                  ;...salva il contenuto di ogni controllo della GUI alla sua variabile associata senza cancellare la finestra
FileDelete, %A_WorkingDir%\tmp.txt                   ;...cancella il file temporaneo dello spool di preview se presente
FileAppend, %_variabile%, %A_WorkingDir%\tmp.txt     ;...riforma il file temporaneo di preview
RunWait "Notepad.exe" "%A_WorkingDir%\tmp.txt", ,    ;...apre il file creato in Notepad come preview
FileDelete, %A_WorkingDir%\tmp.txt                   ;...cancella il file temporaneo di preview
Return                                               ;...Fine di questa sezione di autoesecuzione. Lo script è inattivo fino a quando l'utente farà qualcosa.
;
ButtonStampa:                                        ;...sub richiamata se si preme il pulsante Stampa
Gui, Submit, nohide                                  ;...salva il contenuto di ogni controllo della GUI alla sua variabile associata senza cancellare la finestra
FileDelete, %A_WorkingDir%\tmp.txt                   ;...cancella il file temporaneo dello spool di stampa se presente
FileAppend, %_variabile%, %A_WorkingDir%\tmp.txt     ;...riforma il file temporaneo di preview
RunWait "Notepad.exe" /p "%A_WorkingDir%\tmp.txt", ,hide ;...Invia il file alla stampante predefinita con un'escamotage tramite Notepad.exe
FileDelete, %A_WorkingDir%\tmp.txt                   ;...cancella il file temporaneo di stampa
Return                                               ;...Fine di questa sezione di autoesecuzione. Lo script è inattivo fino a quando l'utente farà qualcosa.


Prossimamente pubblicherò alcune mie funzioni e subroutines utili da inserire nei propri programmi.

Vedere ad esempio:
  Come criptare e decriptare una stringa o un file di testo con AutoHotkey

  Formula per il calcolo del'età dalla data di nascita

  Chiudere tutte le finestre con AutoHotKey

Ciao. Carlo.
[keyphrases: esempio script autohotkey, autohotkey scripts examples, esempi autohotkey, autohotkey esempi di autohotkey]

3 commenti:

  1. Ciao Carlo,
    sapresti dirmi come terminare uno script con la chiusura di un programma?
    Voglio dire, ho compilato uno script e l'ho trasformato in .exe, cliccandoci mi apre un programma ma vorrei che questo script, una volta terminato il programma si auto terminasse.

    Grazie!

    Marco

    RispondiElimina
    Risposte
    1. Ciao Marco.
      Un modo potrebbe essere quello di usare un loop che controlla ciclicamente se il processo che ti interessa sia o meno attivo.
      Ad esempio se il tuo script lancia notepad.exe, per potersi interrompere al terminare di notepad.exe il tuo script dovrebbe contenere:
      Loop
      {
      Process, exist, notepad.exe
      If ErrorLevel
      {
      ;notepad e' attivo quindi non fai nulla
      }
      Else
      {
      ;notepad e' terminato
      ExitApp ;termina il tuo script
      }
      Sleep, 1000 ;pausa di un secondo modificabile a piacere
      }

      Ciao.

      Elimina