Con Windows 10, Microsoft ha inserito delle bellissime immagini nella schermata di blocco.
In questo articolo vi vogliamo spiegare come è possibile realizzare un semplicissimo programmino per recuperare queste immagini ed eventualmente salvarle.

Per creare il programma utilizzeremo Visual studio, con precione la versione express 2015 che è completamente gratuita anche per la realizzazione di eseguibili a pagamento.
Il linguaggio di programmazione è c# basato su NET Framework 4.0, ormai uno dei più di fussi e utilizzati per la programmazione in ambiene windows.

Da sapere è che windows salva queste immagini in una cartella nascosa e precisamente è:

%LocalAppData%\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets

Utilizzando la class System.IO, è possibile recuperare il percorso completo della cartella speciale Local, che varia in base all’utente.
Pertanto sotto viene riportata la funzione per recuperare il percorso.

String FolderName = Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)).FullName;

Ora che abbiamo la radice del percorso dobbiamo aggiunge a questa stringa la parte fissa del percorso ovvero:

FolderName += @”\Local\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets”;

Ok, ora che sappiamo dove andare a recuperare le immagini vediamo di inserire nel nostro programma la directory e poter gestire le immagini.

Occorre creare un nuovo progetto e inserire come controlli un pulsante, un listBox e un PictureBox.

generiamo l’evento di load del form (private void Form1_Load(object sender, EventArgs e)) e all’interno della funziona collegata a questo evento inziamo a recuperare tutti i file e inserirli nella lista.
Siccome i file non sono in formato JPG, ci appoggiamo alla classe Image, dove carichiamo il file e lo trasformiamo in ammigine.
Questo ci serve per poter recuperare solo le immagini con dimensione grande, perchè in questa cartella non sono contenuti solo le immagini di blocco, ma altre immagini come alcune icone, tipo quelle dei social e altre.

Perciò sotto vi mostriamo il codice utilizzato da noi per la creazione delle lista delle immagini.
Sostanzialmente recuperiamo file per file contenuti nella directori utilizzando un foreach, lo castiamo e diamo in lavorazione alla classe Image e infine solo se viene riconosciuto il file come immagine con dimensioni superiori a 800×600 lo introduciamo nella nostra lisBox.
Ultima cosa nella lista non introduciamo tutto il percorso del file, ma solo il nome e per fare questo utilizziamo una funzione della libreria System.Io che si chaima: Path.GetFileName( string file )

// add all files in a list foreach (string file in Directory.GetFiles(FolderName)) { Image img = Image.FromFile(file); if ((img.Size.Width > 800) && (img.Size.Height > 600)) { listBox_Files.Items.Add(Path.GetFileName(file)); } }

Ora che abbiamo riempito la lista, vediamo di gestire quando si seleziona un elemento della lista. Per fare questo occorre agganciare una funzione all’evento SelectedIndexChanged della nostra listBox.
all’interno di questa inseriremo il codice sotto riportato:

tring FileSelected = listBox_Files.SelectedItems[0].ToString(); pictureBox_Preview.Image = Image.FromFile(FolderName + @”\” + FileSelected);

Sostanzialmente viene recuperato il valore del’elemento selezionato nella ListBox.
Una volta ottenuto il nome del file, gli aggiungiamo il percorso della directory.
A questo punto castiamo il file come immagine utilizzando la libreria Image e lo agganziamo alla nostra pictureBox così che abbiamo una anteprima dell’immagine.