Come utilizzare la funzione SHGetFileInfo per ottenere le icone associate ai file in Visual Basic .NET

Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 319340
Questo articolo è stato archiviato. L’articolo, quindi, viene offerto “così come è” e non verrà più aggiornato.
Per la una versione di Microsoft Visual C# .NET di questo articolo, vedere 319350.
Sommario
In questo articolo viene descritto come utilizzare la funzione di SHGetFileInfo per ottenere le icone associate ai file.

back to the top

Creazione di un'applicazione Windows Form

  1. Avviare Microsoft Visual Studio .NET.
  2. Scegliere Nuovo dal menu file , quindi progetto .
  3. Nella finestra di dialogo Nuovo progetto , fare clic su Progetti di Visual Basic in Tipi progetto e scegliere Applicazione Windows in modelli .
  4. Nella casella nome , digitare GetIconSample .
back to the top

Utilizzare la funzione SHGetFileInfo

  1. Aggiungere il codice riportato di seguito all'inizio del file Form1.vb.
    Imports System.Runtime.InteropServices					
  2. Aggiungere il codice riportato di seguito nella classe Form1 dopo l'istruzione di INHERITS .
    Private Structure SHFILEINFO        Public hIcon As IntPtr ' : icon        Public iIcon As Integer ' : icondex        Public dwAttributes As Integer ' : SFGAO_ flags        <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)> _        Public szDisplayName As String        <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=80)> _        Public szTypeName As StringEnd StructurePrivate Declare Ansi Function SHGetFileInfo Lib "shell32.dll" (ByVal pszPath As String, _ByVal dwFileAttributes As Integer, ByRef psfi As SHFILEINFO, ByVal cbFileInfo As Integer, _ByVal uFlags As Integer) As IntPtrPrivate Const SHGFI_ICON = &H100Private Const SHGFI_SMALLICON = &H1Private Const SHGFI_LARGEICON = &H0         ' Large iconPrivate nIndex = 0					
  3. Aggiungere al form un controllo listView , un controllo pulsante e un controllo imageList . I nomi predefiniti sono rispettivamente ListView1, Button1 e ImageList1.
  4. Nella finestra Proprietà di Button1 , impostare il testo del pulsante per Selezionare un file e quindi aggiungere il codice riportato di seguito nell'evento Button1_Click :
    Dim hImgSmall As IntPtr  'The handle to the system image list.Dim hImgLarge As IntPtr  'The handle to the system image list.Dim fName As String      'The file name to get the icon from.Dim shinfo As SHFILEINFOshinfo = New SHFILEINFO()Dim openFileDialog1 As OpenFileDialogopenFileDialog1 = New OpenFileDialog()openFileDialog1.InitialDirectory = "c:\temp\"openFileDialog1.Filter = "All files (*.*)|*.*"openFileDialog1.FilterIndex = 2openFileDialog1.RestoreDirectory = TruelistView1.SmallImageList = imageList1listView1.LargeImageList = ImageList1shinfo.szDisplayName = New String(Chr(0), 260)shinfo.szTypeName = New String(Chr(0), 80)If (openFileDialog1.ShowDialog() = DialogResult.OK) Then     fName = openFileDialog1.FileName     'Use this to get the small icon.     hImgSmall = SHGetFileInfo(fName, 0, shinfo, Marshal.SizeOf(shinfo), _         SHGFI_ICON Or SHGFI_SMALLICON)     'Use this to get the large icon.     'hImgLarge = SHGetFileInfo(fName, 0,      'ref shinfo, (uint)Marshal.SizeOf(shinfo),      'SHGFI_ICON | SHGFI_LARGEICON);     'The icon is returned in the hIcon member of the shinfo struct.     Dim myIcon As System.Drawing.Icon     myIcon = System.Drawing.Icon.FromHandle(shinfo.hIcon)     imageList1.Images.Add(myIcon) 'Add icon to imageList.     listView1.Items.Add(fName, nIndex) 'Add file name and icon to listview.     nIndex = nIndex + 1End If					
back to the top

Eseguire il progetto

  1. Compilare il progetto: scegliere Genera soluzione dal menu Genera .
  2. Premere F5 per eseguire il progetto.
  3. Fare clic su Seleziona un file e quindi selezionare un file nella finestra di dialogo Apri . Il nome del file e l'icona che è associato il file visualizzato nel controllo ListView .
back to the top
Riferimenti
Per ulteriori informazioni in una versione Microsoft Visual C# .NET di questo articolo, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
319350Come utilizzare la funzione di SHGetFileInfo per richiamare le icone che associate al file in Visual C# .NET
back to the top

Proprietà

ID articolo: 319340 - Ultima revisione: 12/07/2015 09:15:43 - Revisione: 2.0

Microsoft Visual Studio .NET 2002 Professional Edition, Microsoft Visual Studio .NET 2002 Enterprise Architect, Microsoft Visual Studio .NET 2002 Enterprise Developer, Microsoft Visual Studio .NET 2002 Academic Edition

  • kbnosurvey kbarchive kbmt kbhowtomaster KB319340 KbMtit
Feedback