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.
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 restituiscefalso. - 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_webaccetta solo indirizzihttp,httpsemailto; il cestino rispetta la stessa guardia dei file (niente radice del disco, cartella personale, Documenti…).
Informazioni sul computer#
Queste funzionano anche fuori da Windows:
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:
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#
| Funzione | Che 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 |
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")fineAppunti, cestino, collegamenti#
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").
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")| Funzione | Che cosa fa |
|---|---|
trova_finestra(titolo), finestra_attiva() | trova una finestra |
minimizza_finestra, massimizza_finestra, ripristina_finestra | cambiano 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_finestra | immagini PNG dello schermo |
scegli_file_da_aprire, scegli_cartella, chiedi_colore | le 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#
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 nofineLe 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.
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.