Vai al contenuto
Leo

10 Sezione 10 di 15

Leo e Windows

Un programma Leo può parlare con Windows: sapere quanta batteria resta, aprire un programma, leggere gli appunti, mettere in ordine le finestre, mostrare una notifica. Le azioni delicate chiedono sempre conferma a chi usa il programma.

  • 5 minuti di lettura
  • Livello: intermedio
  • 7 esempi verificati

Tre gruppi di funzioni#

Le funzioni di sistema sono più di 160, divise in tre gruppi, sempre disponibili senza importare nulla:

S1 Sistema

Informazioni sul computer, cartelle speciali, variabili d'ambiente, processi, programmi e comandi, appunti, cestino, collegamenti, file recenti, avvio automatico.

S2 Desktop

Le finestre delle altre applicazioni, gli schermi, la cattura dello schermo, le notifiche, le finestre di dialogo native, lo sfondo, il tema, i suoni di avviso.

S3 Computer

Batteria, alimentazione, volume, luminosità, processore e memoria, dischi, rete e Wi-Fi, stampanti, registro, servizi, orologio, hardware e USB.

! Solo su Windows

Quasi tutte usano Windows. Su macOS e Linux si fermano con «nome funziona solo su Windows.», un ErroreValore che puoi catturare.

Le regole di sicurezza#

Queste funzioni possono cambiare il computer, quindi Leo segue regole precise, pensate per proteggere chi usa il tuo programma:

  • Le azioni delicate chiedono conferma. Spegnere, riavviare, chiudere un programma, eseguire un comando, svuotare il cestino, scrivere nel registro, stampare: compare una finestra Sì/No (o la domanda [s/n] nel terminale). Se l'utente risponde No, o non può rispondere, non succede niente e la funzione restituisce falso.
  • La conferma si salta solo per scelta esplicita, scrivendo senza_conferma = vero. Usalo solo quando sei tu stesso a usare il programma.
  • Gli argomenti si controllano prima della domanda: una richiesta sbagliata non chiede niente e dà subito un errore chiaro.
  • Niente tasti o clic simulati: nessuna funzione invia tasti o clic ad altre applicazioni né legge quello che scrivi.
  • Il registro si scrive solo nella parte dell'utente (HKCU) e mai nelle chiavi usate per aggirare le protezioni di Windows o per far partire programmi di nascosto.
  • I processi vitali di Windows non si chiudono (lsass, csrss, winlogon, svchost…), e nemmeno il programma stesso.
  • Spegnere o riavviare non forza la chiusura degli altri programmi e avvisa di salvare il lavoro; uno spegnimento programmato si annulla con annulla_spegnimento().
  • apri_indirizzo_web accetta solo indirizzi http, https e mailto; il cestino rispetta la stessa guardia dei file (niente radice del disco, cartella personale, Documenti…).

Informazioni sul computer#

Queste funzionano anche fuori da Windows:

chi_sono.leoeseguito con Leo
stampa("Computer:", nome_computer())stampa("Utente:", nome_utente())stampa("Architettura:", architettura())stampa("Processori logici:", numero_core())stampa("Fuso orario:", fuso_orario()["nome"])stampa("Cartella temporanea:", leggi_variabile_ambiente("TEMP", "non impostata"))stampa("Suoni di avviso:", suoni_di_sistema())

E queste danno il quadro completo su Windows:

stato_pc.leocontrollato con Leo
stampa(versione_windows())stampa("Acceso da", tempo_accensione_testo())se ha_batteria() allora    stampa("Batteria: {percentuale_batteria()}%", batteria_in_carica())finestampa("Memoria usata: {uso_memoria()}%")stampa("Spazio libero su C:", dimensione_leggibile(spazio_libero("C:")))stampa("Wi-Fi:", wifi_connesso(), "segnale", potenza_wifi())stampa("Processore:", info_processore()["nome"])

Programmi, comandi e processi#

FunzioneChe cosa fa
avvia_programma(programma, argomenti)avvia un programma; con attendi = vero aspetta la fine
apri_con_programma_predefinito(percorso)apre un file come con il doppio clic
apri_in_esplora_file(cartella)apre una cartella in Esplora file
apri_indirizzo_web(indirizzo)apre una pagina nel browser
apri_impostazioni_windows("wifi")apre una pagina delle Impostazioni
esegui_comando(comando) (conferma)esegue un comando e restituisce uscita, errore e codice
elenca_processi(filtro), processo_esiste(nome)i programmi in esecuzione
termina_processo(nome) (conferma)chiude un programma
blocco_note.leocontrollato con Leo
avvia_programma("notepad.exe")attendi(1)per ogni p in elenca_processi("notepad") fai    stampa(p["nome"], p["pid"], p["memoria_mb"], "MB")finese termina_processo("notepad.exe") > 0 allora    stampa("Blocco note chiuso")altrimenti    stampa("Hai risposto No: il Blocco note resta aperto")fine

Appunti, cestino, collegamenti#

appunti.leocontrollato con Leo
scrivi_appunti("Testo copiato da Leo")stampa(leggi_appunti())se appunti_contiene_immagine() allora    salva_immagine_appunti("cattura.png")finestampa("Nel cestino ci sono", elementi_nel_cestino(), "elementi")crea_collegamento("C:\\Users\\ada\\Leo\\MioGioco.exe", "Il mio gioco", dove = "desktop")

Altre: svuota_cestino() (conferma), file_recenti(), aggiungi_all_avvio() e togli_dall_avvio() (conferma), programma_predefinito(".pdf").

Finestre, schermi e notifiche#

Una finestra di un'altra applicazione si indica con un pezzo del suo titolo o con il nome del programma ("Blocco note", "notepad").

ordina_desktop.leocontrollato con Leo
per ogni f in elenca_finestre() fai    stampa(f["titolo"], f["larghezza"], "x", f["altezza"])fineaffianca_finestre("Blocco note", "Calcolatrice", 60)stampa("Schermi:", numero_schermi(), risoluzione_schermo())cattura_schermo("schermo.png")mostra_notifica("Leo", "Ho messo in ordine le finestre")
FunzioneChe cosa fa
trova_finestra(titolo), finestra_attiva()trova una finestra
minimizza_finestra, massimizza_finestra, ripristina_finestracambiano lo stato
sposta_finestra(f, x, y), ridimensiona_finestra(f, l, a)posizione e dimensioni
chiudi_finestra_programma(f) (conferma)come premere la ✕: l'applicazione può chiedere di salvare
cattura_schermo, cattura_zona, cattura_finestraimmagini PNG dello schermo
scegli_file_da_aprire, scegli_cartella, chiedi_colorele finestre di dialogo di Windows, anche dai programmi testuali
imposta_sfondo_desktop(percorso), tema_scuro_attivo()sfondo e tema di Windows

Batteria, audio, schermo, alimentazione#

pausa_caffe.leocontrollato con Leo
stampa("Volume:", volume_principale())imposta_volume(30)imposta_luminosita(60)impedisci_standby()              # il PC resta sveglio mentre il programma lavoraattendi(5)consenti_standby()se spegni_computer(ritardo = 600) allora    stampa("Il PC si spegnerà tra 10 minuti")    annulla_spegnimento()        # ...anzi nofine

Le funzioni di alimentazione (blocca_computer, sospendi_computer, iberna_computer, spegni_computer, riavvia_computer, disconnetti_utente) chiedono sempre conferma, accettano un ritardo in secondi e restituiscono vero se l'azione è stata fatta o programmata.

Il registro di Windows#

Il registro si legge ovunque; si scrive e si cancella solo in HKCU (la parte dell'utente), dopo conferma.

registro.leocontrollato con Leo
variabile chiave = "HKCU\\Software\\MioProgramma"se scrivi_registro(chiave, "ultimo_avvio", testo(adesso())) allora    stampa(leggi_registro(chiave, "ultimo_avvio"))finestampa(elenca_valori_registro(chiave))

Esempi completi#

Nella cartella di Leo, in esempi/sistema/, trovi programmi pronti da provare: s1_informazioni_sistema.leo, s1_comandi_e_collegamenti.leo, s2_organizza_desktop.leo, s2_dialoghi_e_sfondo.leo, s3_stato_del_computer.leo (solo lettura) e s3_pausa_caffe.leo.