Il Desktop di Windows

Il sistema operativo Windows presenta un’interfaccia utente a finestre, il desktop è quella principale che l’utilizzatore visualizza per prima quando entra nel suo spazio. All’avvio di Windows vengono create una serie di finestre, visibili e non, con le quali l’utente interagisce. Un normale desktop presenta una serie di icone ( shortcut ) e cartelle ( folder ), creati dall’utente stesso. Tutti gli oggetti creati dall’utilizzatore risiedono, su Windows 7, in una cartella all’interno di quella specifica dell’utente. Gli shortcut che appaiono per default ( Computer, Rete, etc…) non sono visibili nella cartella dell’utente, infatti Explorer sa che il desktop è un oggetto speciale a monte di tutta la gerarchia delle cartelle ed al suo interno inserisce ( se scelto dall’utente nelle impostazioni del desktop ) i collegamenti standard ( file .lnk ). Come tutti sanno, basta fare click con il pulsante destro del mouse sul desktop per poterlo personalizzare, ma queste informazioni le prendiamo come acquisite ed andiamo a scoprire le componenti del desktop di Windows, in questo caso particolare dell’ultimo nato “Windows 7”.
Se prendiamo lo strumento classico degli sviluppatori su piattaforma Windows, il famoso Spy++, possiamo accorgerci che il desktop è formato da tutta una serie di finestre:

  • La parte principale che contiene i collegamenti e le cartelle si chiama FolderView di classe SysListView32, si proprio un controllo lista che contiene questi elementi.
  • Normalmente in basso abbiamo la taskbar di classe Shell_TrayWnd e che contiene tutti gli altri componenti come le icone dei programmi in esecuzione, l’orologio, l’icona del volume.
  • Il primo elemento della taskbar sono le applicazioni in esecuzione, si tratta sempre di una lista di classe MSTaskListWClass.
  • Continuando verso destra, di solito troviamo il pulsante per aprire la barra della lingua, il titolo di questa finestra è TF_FloatingLangBar_WndTitle ed è di classe CiceroUIWndFrame.
  • Continuando troviamo un semplice controllo Button che consente di aprire la lista ( area ) delle icone di notifica, delle quali abbiamo già descritto l’inserimento in questo articolo.
  • Successivamente troviamo l’orologio di classe TrayClockWClass e per ultimo una finestra di classe TrayShowDesktopButtonWClass che serve proprio a visualizzare il contenuto del desktop.

Tutte le finestre del sistema operativo sono figlie di una desktop che copre tutta l’area dello schermo. La classe di questa finestra è la stringa “#32769” il cui valore è un atom, ovvero l’identificatore di una stringa di sistema che contiene appunto la parola “Desktop”.

Finestre Desktop

Le finestre del desktop di Windows 7

Questa finestra non è creata da Explorer, bensì da un modulo chiamato msgsrv32, tutte le finestre top-level create da Windows, comprese quelle dei singoli applicativi, sono figlie di questa desktop.
Dal punto di vista della programmazione, la finestra desktop viene identificata dalla sigla HWND_DESKTOP ed il suo handle è restituito dalla funzione GetDesktopWindow(). Il desktop però non è la finestra che contiene le icone, come abbiamo visto in precedenza, si tratta di una finestra che non ha compiti particolari se non quello di costituire la radice dell’albero di finestre della shell di Windows ( vedi immagine sopra ).
Conoscere questi aspetti di Windows è molto importante per creare quelle applicazioni che consentono all’utente di utilizzare solo un programma, senza permettergli di utilizzare il sistema operativo, ad esempio un terminale cassa con tasti grandi per il touch screen. Per fare questo occorre nascondere il desktop e rendere inattive alcune combinazioni di tasti di sistema come ALT+TAB oppure il tasto Windows che mostrerebbero il menù di avvio. Per nascondere la taskbar basta ottenerne l’handle con la funzione FindWindow ed inserendo la classe Shell_TrayWnd, come avevamo scoperto attraverso Spy++. Per disabilitare il desktop si possono percorrere varie strade, la più semplice ed immediata è creare una finestra invisibile al di sopra del desktop, senza barra del titolo, con lo stile WS_EX_TOOLWINDOW e  WS_EX_TRANSPARENT.

Informazioni su Giampaolo Rossi

Sviluppatore di software gestionale da oltre 28 anni.
Questa voce è stata pubblicata in Windows e contrassegnata con . Contrassegna il permalink.