sabato 9 maggio 2020

.Net rilevare lo sfondo della schermata di blocco Windows 10 spotlight

Si riporta l'articolo scritto per il sito https://www.iprogrammatori.it/articoli/microsoft-net-framework/art_net-rilevare-lo-sfondo-della-schermata-di-blocco-windows-10-spotlight_1649.aspx


In questo articolo vedremo come rilevare le immagini delle schermate di blocco di Windows 10 e salvarle in una nostra cartella.
Per coloro che posseggono il sistema operativo “Windows 10” avranno notato come la schermata di blocco, di volta in volta propone una bella immagine di qualche paesaggio mozzafiato.
Lo Spotlight, che visualizza le immagini avviene nel caso che abbiamo impostato le immagini causali per la schermata di blocco.
Queste immagini si trovano nella cartella di sistema riportata tramite il comando qui di seguito.

%LocalAppData%\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets
Se usiamo tale comando possiamo inserirlo nella casella “esegui” quella situata in basso a sinistra  ci aprirà esplora risorse con una serie di file senza estensione.
Vedremo, come realizzare un semplice programma, che dato un percorso andremo a copiare tutte le immagini presenti nella cartella sistema, rinominarle con l’estensione di tipo “.jpg”.
Il programma può tornare utile per coloro che non hanno dimestichezza con Windows, o per aggiungere determinate funzionalità ai nostri programmi.
Come progetto utilizzeremo le applicazioni di tipo “Windows” ma tale tecnica si può utilizzare anche per i progetti di tipo web, utilizzando i linguaggi di programmazione Visual Basic Net e C#.

Creazione del progetto

Si crea un nuovo progetto di tipo “Windows Application” con il linguaggio di proprio interesse, una volta creato il progetto di tipo applicativo, aggiungiamo alla nostra form, un controllo di tipo “Label” che conterrà il titolo per la casella di testo, due pulsanti, uno per rilevare il percorso dove andremo a salvare le immagini e l’altro per eseguire il programma, ed infine una casella di testo, con il quale sarà riportato la cartella dove andremo a copiare le immagini.
Il tutto sarà come mostrato in figura 1.


 
Figura 1 – La form con i vari controlli.

Stesura del codice

Ora passiamo alla stesura del codice, passiamo in visualizzazione codice e nella parte superiore, sopra ad ogni dichiarazione, inseriamo lo spazio dei nomi per la gestione dei file, qui di seguito tale dichiarazione per entrambi i linguaggi.


VB.Net

Imports System.IO

 

C#

using System.IO;

Ora passiamo in visualizzazione disegno, nella form, e facciamo doppio click sul pulsante con il quale andremo a selezionare la cartella, nella figura è quello posto sulla destra con i tre punti.
Nel fare doppio click sul pulsante, passeremo in visualizzazione codice, con il quale dovremmo scrivere le istruzioni per visualizzare nella casella di testo il percorso della cartella selezionato, tramite l’uso della classe FolderBrowserDialog.
Qui di seguito si riportale le dichiarazioni di tali operazioni, per entrambi i linguaggi.




VB.Net

Private Sub BtnImpostaPercorso_Click(sender As Object, e As EventArgs) Handles BtnImpostaPercorso.Click

        Dim selezionaCartella As FolderBrowserDialog = New FolderBrowserDialog()

        selezionaCartella.Description = "Seleziona la cartella dove salvare le immagini"

        selezionaCartella.RootFolder = Environment.SpecialFolder.Desktop

 

        If selezionaCartella.ShowDialog() = System.Windows.Forms.DialogResult.OK Then

            txtPercorsoCartella.Text = selezionaCartella.SelectedPath

        End If

    End Sub

C#

   private void BtnImpostaPercorso_Click(object sender, EventArgs e)

        {

 

            FolderBrowserDialog selezionaCartella = new FolderBrowserDialog();

            selezionaCartella.Description = "Seleziona la cartella dove salvare le immagini";

            selezionaCartella.RootFolder = Environment.SpecialFolder.Desktop;

          

 

 

 

            if (selezionaCartella.ShowDialog() == System.Windows.Forms.DialogResult.OK)

            {

 

                txtPercorsoCartella.Text = selezionaCartella.SelectedPath;

 

 

 

            }

        }


Ora passiamo in visualizzazione grafica, e facciamo doppio click sul pulsante denominato “Rileva” in questo modo passeremo in visualizzazione codice, ed in particolare nell’evento click del pulsante.
Scriveremo il codice per copiare tutti i file contenuti in questa cartelle, aggiungere l’estensione “.jpg” e copiarli nella cartella che abbiamo selezionato.
Qui di seguito si riporta il frammento di codice per entrambi i linguaggi di programmazione.







VB.Net

Private Sub BtnRileva_Click(sender As Object, e As EventArgs) Handles BtnRileva.Click

        Try

            Dim FileDaCopiare As String = ""

 

            For Each fileTrovato As String In Directory.GetFiles(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) & "\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets")

                FileDaCopiare = txtPercorsoCartella.Text & "\" + Path.GetFileName(fileTrovato) & ".jpg"

                File.Copy(fileTrovato, FileDaCopiare)

            Next

 

        Catch exio As IOException

            MessageBox.Show("Estrapola sfondi", "Errore: " & exio.Message, MessageBoxButtons.OK, MessageBoxIcon.Error)

        Catch ex As Exception

            MessageBox.Show("Estrapola sfondi", "Errore: " & ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error)

        End Try

    End Sub

C#

 

private void BtnRileva_Click(object sender, EventArgs e)

        {

            try

            {

 

 

                string FileDaCopiare = "";

                foreach (string file in Directory.GetFiles(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets"))

                {

                    FileDaCopiare =  txtPercorsoCartella.Text +"\\"+ Path.GetFileName(file) + ".jpg";

                    File.Copy(file, FileDaCopiare);

                }

 

            }

            catch (IOException exio)

            {

                MessageBox.Show("Estrapola sfondi", "Errore: " + exio.Message, MessageBoxButtons.OK, MessageBoxIcon.Error);

           

            }

            catch (Exception ex)

            {

                MessageBox.Show("Estrapola sfondi", "Errore: " + ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error);

            }

        }




Ora non ci resta che testare il nostro applicativo ed aspettare che il programma termina.
Prima di eseguire il programma si consiglia di creare una cartella, eventualmente anche sul desktop, dove andremo a salvare le immagini.

Conclusioni

L’articolo ha fornito al lettore una tecnica di come realizzare un programma amatoriale, ma soprattutto scoprire come le numerose attività di sistemista si possono tramutare in applicativi, permettendo anche all’utente che ha poca dimestichezza con il computer, di utilizzare il computer superando i tanti limiti che ha, e quindi diventare uno strumento più intuitivo.
Con attenti programmi, possiamo automatizzare e soprattutto fornire agli utenti strumenti sempre più potenti ed intuitivi dando così la possibilità alle persone di avere autonomia nell’utilizzo del computer aggiungendo questi espedienti.

Nessun commento: