Visual Basic Simple
Aprire le cartelle di sistema
Sincronizza Indice
Sincronizza Indice
Scarica il progetto
Scarica il progetto
Scarica il testo dell'articolo
Testo dell'articolo
Stampa l'articolo
Stampa l'articolo
Ricerca personalizzata

Difficoltà: 1 / 5

Abbiamo visto in un altro articolo come recuperare il percorso delle cartelle di sistema, per consentire ad un programma di interagire con esse. Vedremo invece in questo semplicissimo articolo come richiedere l'apertura di quelle particolari cartelle il cui contenuto non è strettamente legato ad una cartella del file system. Facciamo naturalmente riferimento alle cartelle speciali Risorse del computer, Risorse di rete, Cestino, Pannello di Controllo e similari.

Il nostro esempio si basa sul richiamo di un file di collegamento alla risorsa specificata; pertanto chi non volesse scaricare i files già pronti di quest'esempio può autonomamente generarli nuovamente, semplicemente cliccando con il pulsante destro del mouse sopra la cartella da aprire e scegliere la voce Crea Collegamento. Sarà creato un file con estensione .LNK che verrà avviato mediante la funzione dell'API ShellExecute già trattata in tanti altri articoli del sito.

Figura 1L'unico form che compone il progetto presenta soltanto 8 CommandButton, posti in una matrice di nome cmdApriCartella.
L'intera gestione dell'apertura delle singole cartelle è effettuata dall'evento Click di un qualsiasi pulsante:

  1. Option Explicit
  2. Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
  3. Private Sub cmdApriCartella_Click(Index As Integer)
  4.     Dim strNomeFileLnk As String
  5.     Select Case Index
  6.         Case 0: strNomeFileLnk = "Risorse del computer.lnk"
  7.         Case 1: strNomeFileLnk = "Risorse di rete.lnk"
  8.         Case 2: strNomeFileLnk = "Cestino.lnk"
  9.         Case 3: strNomeFileLnk = "Desktop.scf"
  10.         Case 4: strNomeFileLnk = "Pannello di controllo.lnk"
  11.         Case 5: strNomeFileLnk = "Stampanti.lnk"
  12.         Case 6: strNomeFileLnk = "Accesso remoto.lnk"
  13.         Case 7: strNomeFileLnk = "Operazioni pianificate.lnk"
  14.     End Select
  15.     Call ShellExecute(Me.hwnd, "", App.Path & "\" & strNomeFileLnk, "", "", 1)
  16. End Sub

In funzione del pulsante premuto (e quindi dell'indice passato all'evento Click), sarà specificato un file di collegamento differente (righe 7-16). Tali files dovranno quindi trovarsi nella stessa cartella in cui si trova il programma in esecuzione.

Effettuata la scelta, il file specificato sarà avviato mediante la funzione ShellExecute (riga 17), in una maniera davvero molto semplice.

La soluzione presentata è davvero molto semplice, al limite del banale, ma risolve un problema abbastanza complesso. Le cartelle speciali infatti non puntano ad alcun percorso del file system del disco.

Fibia FBI
6 Luglio 2003

Scarica il progetto
Scarica il progetto
Scarica il testo dell'articolo
Scarica il testo dell'articolo
Stampa l'articolo
Stampa l'articolo
Torna all'indice degli HowTo