Τρόπος χρήσης της συνάρτησης SHGetFileInfo για να λάβετε τα εικονίδια που σχετίζονται με τα αρχεία στο Visual C# .NET

Μεταφράσεις άρθρων Μεταφράσεις άρθρων
Αναγν. άρθρου: 319350 - Δείτε τα προϊόντα στα οποία αναφέρεται το συγκεκριμένο άρθρο.
Ανάπτυξη όλων | Σύμπτυξη όλων

Σε αυτήν τη σελίδα

Περίληψη

Αυτό το άρθρο βήμα προς βήμα περιγράφει τον τρόπο χρήσης τουSHGetFileInfoλειτουργία για να εμφανιστούν τα εικονίδια που σχετίζονται με τα αρχεία.

Δημιουργία μιας εφαρμογής Windows Forms

  1. Ξεκινήστε το Microsoft Visual Studio .NET.
  2. Στο διακομιστήFILEμενού, σημείοΝέα, και στη συνέχεια κάντε κλικ στο κουμπίΤο έργο.
  3. ΣτοΝέο έργοπαράθυρο διαλόγου, κάντε κλικ στο κουμπίΤο Visual C# έργαunderΤύποι έργου, και στη συνέχεια κάντε κλικ στο κουμπίΕφαρμογή των WindowsunderΠρότυπα.
  4. ΣτοNAMEπληκτρολογήστεGetIconSample.

Χρησιμοποιήστε τη συνάρτηση SHGetFileInfo

  1. Προσθέστε τον ακόλουθο κώδικα στο αρχείο Form1.cs στο τέλος τουusingΟι προτάσεις.
    using System.Runtime.InteropServices;
    					
  2. Προσθέστε τον ακόλουθο κώδικα μετά τοΦόρμα1η κλάση τουGetIconSampleχώρος ονομάτων.
    [StructLayout(LayoutKind.Sequential)]
    public struct SHFILEINFO 
    {
    	public IntPtr hIcon;
    	public IntPtr iIcon;
    	public uint dwAttributes;
    	[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
    	public string szDisplayName;
    	[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)]
    	public string szTypeName;
    };
    
    class Win32
    {
    	public const uint SHGFI_ICON = 0x100;
    	public const uint SHGFI_LARGEICON = 0x0; // 'Large icon
    	public const uint SHGFI_SMALLICON = 0x1; // 'Small icon
    		
    	[DllImport("shell32.dll")]
    	public static extern IntPtr SHGetFileInfo(string pszPath, uint dwFileAttributes, ref SHFILEINFO psfi, uint cbSizeFileInfo, uint uFlags);
    }
    					
  3. Προσθέστε τον ακόλουθο κώδικα στο στοΦόρμα1κλάση μετά τηνΙΔΙΩΤΙΚΌπροτάσεις:
    private int nIndex = 0;
    					
  4. Προσθήκη ενόςlistViewστοιχείο ελέγχου, ένακουμπίστοιχείο ελέγχου, και έναimageListελέγχου στη φόρμα. Τα προεπιλεγμένα ονόματα είναι listView1 button1 και imageList1 αντίστοιχα.
  5. Στο παράθυρο διαλόγου Ιδιότητες τουbutton1, ορίστε το κείμενο του κουμπιούΕπιλέξτε ένα αρχείο, και στη συνέχεια προσθέστε τον ακόλουθο κώδικα στο στοbutton1_clickΣυμβάν:
    IntPtr hImgSmall; //the handle to the system image list
    IntPtr hImgLarge; //the handle to the system image list
    string fName; //  'the file name to get icon from
    SHFILEINFO shinfo = new SHFILEINFO();
       
    OpenFileDialog openFileDialog1 = new OpenFileDialog();
    openFileDialog1.InitialDirectory = "c:\\temp\\";
    openFileDialog1.Filter = "All files (*.*)|*.*";
    openFileDialog1.FilterIndex = 2;
    openFileDialog1.RestoreDirectory = true ;
    
    listView1.SmallImageList = imageList1;
    listView1.LargeImageList = imageList1;
    			
    if(openFileDialog1.ShowDialog() == DialogResult.OK) 
    {
         fName = openFileDialog1.FileName;
         //Use this to get the small Icon
         hImgSmall = Win32.SHGetFileInfo(fName, 0, ref shinfo,(uint)Marshal.SizeOf(shinfo),Win32.SHGFI_ICON |Win32.SHGFI_SMALLICON);
    
        //Use this to get the large Icon
        //hImgLarge = SHGetFileInfo(fName, 0, 
        //	ref shinfo, (uint)Marshal.SizeOf(shinfo), 
        //	Win32.SHGFI_ICON | Win32.SHGFI_LARGEICON);
    
        //The icon is returned in the hIcon member of the shinfo struct
        System.Drawing.Icon myIcon = System.Drawing.Icon.FromHandle(shinfo.hIcon);
    				
        imageList1.Images.Add(myIcon);
    				
        //Add file name and icon to listview
        listView1.Items.Add(fName, nIndex++); 
    }
    					

Εκτέλεση του έργου

  1. Μεταγλωττίστε το έργο: από τοΔημιουργίαμενού, κάντε κλικ στο κουμπίΔημιουργία λύσεων.
  2. Πατήστε F5 για να εκτελέσετε το έργο.
  3. Κάντε κλικΕπιλέξτε ένα αρχείο, και στη συνέχεια επιλέξτε ένα αρχείο με τοOpenπαράθυρο διαλόγου. Το όνομα του αρχείου και του εικονιδίου που συσχετίζεται με το αρχείο εμφανίζεται στο στοΠροβολή λίσταςControl.

Αναφορές

For more information in a Microsoft Visual Basic .NET version of this article, click the following article number to view the article in the Microsoft Knowledge Base:
319340How to use the SHGetFileInfo function to get the icons that are associated with files in Visual Basic .NET

Ιδιότητες

Αναγν. άρθρου: 319350 - Τελευταία αναθεώρηση: Τρίτη, 21 Δεκεμβρίου 2010 - Αναθεώρηση: 2.0
Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Microsoft Visual Studio .NET 2003 Professional Edition
  • Microsoft Visual Studio .NET 2003 Enterprise Architect
  • Microsoft Visual Studio .NET 2003 Enterprise Developer
  • Microsoft Visual Studio .NET 2003 Academic Edition
  • 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
Λέξεις-κλειδιά: 
kbhowtomaster kbmt KB319350 KbMtel
Μηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:319350

Αποστολή σχολίων

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com