![]() |
![]() Sincronizza Indice |
![]() Scarica il progetto |
![]() Testo dell'articolo |
![]() Stampa l'articolo |
Alcuni programmi che operano con le impostazioni del sistema possono dover presentare all'utente la possibilità di modificare i dati tramite le applet del pannello di controllo, quei piccoli programmi che regolano il comportamento delle impostazioni del computer in uso.
Vedremo in questo semplice HowTo come richiamare tali applet per permettere all'utente la visualizzazione o la modifica dei dati del sistema. Utilizzeremo una soluzione molto semplice, la stessa che utilizza Windows quando l'utente clicca due volte sull'icona di un file del pannello di controllo; questi files avranno estensione CPL.
La prima operazione da effettuare all'avvio del nostro progetto sarà quella di ricercare tutte le applet, ovvero tutti i files con estensione CPL presenti nella cartella System (se usiamo Windows 9x/ME) o System32 (se usiamo Windows NT). L'operazione di elencazione di tutti i files corrispondenti ad un criterio è trattata in un altro HowTo con la piccolissima differenza che invece di utilizzare una ListBox questo caso utilizza una ComboBox. Vediamo il nostro codice:
Alla riga 3 abbiamo dichiarato la funzione API GetSystemDirectory che recupererà il percorso della cartella System o System32 del computer. Abbiamo detto infatti che tutte le applet conosciute dal pannello di controllo risiedono lì dentro.
Alla riga 4 è dichiarata la funzione API SendMessage che
utilizzeremo per recuperare con estrema semplicità tutte le applet
contenute nella cartella. Il messaggio che invieremo sarà quello
definito alla riga successiva, corrispondente alla costante
E così, all'avvio del form viene costruita la stringa che indicherà
il percorso della cartella da cui ritrovare i files CPL. Alla riga 8 definiamo
una costante di nome lngFilesTutti corrispondente alla combinazione
dei vari attributi dei files. Questa sarà utilizzata durante la
ricerca dei files. Alla riga 10 viene allocato
lo spazio necessario ed alla riga successiva viene ritrovata la cartella
System o System32 tramite la funzione API GetSystemDirectory. Completata la costruzione del percorso e del filtro di ricerca richiederemo alla funzione API SendMessage l'autoelencazione di tutti i files CPL specificando innanzitutto l'handle della ComboBox, il messaggio CB_DIR, il tipo di ricerca da effettuare ed il percorso.
L'unico evento da gestire nel nostro progetto riguarda il click sull'unico pulsante cmdApriApplet per richiedere l'apertura dell'applet corrispondente, operazione che effettueremo tramite l'utilizzo dell'utility RUNDLL32. La stringa con cui richiamiamo l'applet proviene dal registro di Windows. Abbiamo infatti detto che lo stesso Windows (più precisamente Explorer) utilizza questa tecnica per richiamare i files CPL.
La stringa si compone del nome dell'utility Rundll32 seguita dalla libreria shell32.dll da cui richiamare la funzione API Control_RunDLL. Tra il nome della libreria e della funzione è richiesta la presenza di una virgola. Tutto quello che seguirà sono i dati da fornire alla funzione API Control_RunDLL e più precisamente il nome, senza necessità del percorso, dell'applet da richiamare; il secondo parametro non è utilizzato mentre il terzo indicherà il numero della pagina da richiamare, specificata nella casella di testo txtNumeroPagina. Un esempio di stringa può essere: |
Il difetto principale di questa soluzione è rappresentato dall'impossibilità di scegliere alcune schede di alcune applet. Questo codice non richiamerà infatti tutte le pagine a disposizione dell'utente ma soltanto una parte di queste. Fibia
FBI
|
![]() |