L'uscita di Windows 7, avvenuta il 22 ottobre, ha senza dubbio catturato l'attenzione di tutti, dato che già con le prime beta si era dimostrato un sistema operativo robusto e piuttosto veloce anche su macchine non di ultima generazione. Sebbene pubblicizzato come una major release, come versione 7 del sistema operativo client Microsoft, Seven si poggia sul suo predecessore Windows Vista classificandosi di fatto come la versione 6.1 e godendo dello scotto che gli utenti han dovuto pagare principalmente per un'importante cambiamento nel modello dei driver che, unito allo scarso supporto dei produttori hardware, ha causato un malcontento generale per il malfunzionamento o l'impossibilità di utilizzare alcune periferiche.
In Windows 7 quindi non ci sono cambiamenti di forte impatto ad eccezione di quella che colpisce di più non appena si avvia il sistema operativo: la task bar. Oltre a questo però sono state incluse numerose API legate a nuove funzionalità introdotte in Seven, alcune delle quali non si possono provare direttamente se non si ha a disposizione un hardware specifico e dei driver pensati specificatamente per Seven.
In questo articolo si vedranno quindi tutte queste nuove funzionalità, soffermandoci su quelle maggiormente utili. Le API messe a disposizione sono in C++, ma poiché residenti in DLL scritte in C style è possibile interrogarle anche da .NET attraverso l'interop e il P/Invoke. Fortunatamente poi, i programmatori Microsoft hanno sviluppato il Windows API CodePack, la libreria presa in esame in questo articolo che contiene gran parte del lavoro di interop necessario per poter chiamare le API di Windows 7 e versioni precedenti. Parte di queste API saranno inoltre introdotte nel futuro .NET Framework 4.0 e in particolare negli assembly specifici di Windows Presentation Foundation.
La nuova task bar di Windows 7
La novità principale di Seven che balza subito all'occhio è la nuova task bar che rispetto alle versioni precedenti è stata pensata in modo che l'utente possa vedere i task attivi, ma averli anche a disposizione per un futuro utilizzo effettuando il pin dell'icona. L'idea è quindi di fornire un unico metodo di accesso alle applicazioni, siano esse aperte o meno e di fornire la medesima esperienza per effettuare le operazioni più comuni, andando anche in parte a sostituirsi alla system tray.
Quando ogni applicazione è in esecuzione ogni icona viene marcata per distinguerla da quelle non avviate e qualora lo stesso processo sia avviato più volte questo viene raggruppato automaticamente come visibile dall'immagine per quanto riguarda Visual Studio.
Questo comportamento è il predefinito e si basa sull'ApplicationId, una proprietà calcolata automaticamente in base al nome del processo in esecuzione che fa sì che tutte le finestre che si possono aprire nella propria applicazione, visibili sulla task bar, siano automaticamente raggruppate. E' possibile personalizzare questo comportamento attraverso la classe TaskbarManager dell'assembly Microsoft.WindowsAPICodePack.Shell con la proprietà ApplicationId: una stringa identificativa dell'intero processo. Ad esempio il codice seguente genera ID diverso ad ogni esecuzione.
[STAThread] static void Main() { TaskbarManager.Instance.ApplicationId = Guid.NewGuid().ToString();
La maggior parte delle funzionalità inerti alla task bar sono specifiche, come di consueto per tutte le API Windows, alla finestra perciò anche in questo caso è possibile specificare per una specifica finestra l'ApplicationId attraverso il suo handle e il metodo SetApplicationIdForSpecificWindow.
La jump list della Taskbar
La jump list è un altro elemento nuovo che si sostituisce al vecchio menu contestuale delle applicazioni e compare sia per i processi in esecuzione e non. Il suo scopo è fornire un accesso rapido alle azioni che si compiono più spesso tra le quali l'apertura degli ultimi file aperti. Nella jump list si possono quindi inserire due tipologie di task: gli item e i link.
I primi sono collegamenti a file che l'applicazione può aprire e deve perciò essere necessariamente registrata come handler per una o più estensioni di file. Le vecchie applicazioni anche se non pensate esplicitamente per Window 7, godono già automaticamente di questa funzione, dato che ogni CommonDialog utilizzata per l'apertura e salvataggio di un file comporta la registrazione del file stesso tra quelli recenti. Nell'immagine successiva è possibile vedere ad esempio come Visual Studio mostri gli ultimi file aperti.
Attenzione: Questo articolo contiene un allegato.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.