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

ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.

Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:319350
Αυτό το αρχείο έχει αρχειοθετηθεί. Προσφέρεται “ως έχει” και δεν θα ενημερώνεται πια.
Περίληψη
Αυτό το άρθρο βήμα προς βήμα περιγράφει τον τρόπο χρήσης τουSHGetFileInfoλειτουργία για να εμφανιστούν τα εικονίδια που σχετίζονται με τα αρχεία.

back to the top

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

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

Χρησιμοποιήστε τη συνάρτηση 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 listIntPtr hImgLarge; //the handle to the system image liststring fName; //  'the file name to get icon fromSHFILEINFO 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++); }					
back to the top

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

  1. Μεταγλωττίστε το έργο: από τοΔημιουργίαμενού, κάντε κλικ στο κουμπίΔημιουργία λύσεων.
  2. Πατήστε F5 για να εκτελέσετε το έργο.
  3. Κάντε κλικΕπιλέξτε ένα αρχείο, και στη συνέχεια επιλέξτε ένα αρχείο με τοOpenπαράθυρο διαλόγου. Το όνομα του αρχείου και του εικονιδίου που συσχετίζεται με το αρχείο εμφανίζεται στο στοΠροβολή λίσταςControl.
back to the top
Αναφορές
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
back to the top

Προειδοποίηση: Αυτό το άρθρο έχει μεταφραστεί αυτόματα

Ιδιότητες

Αναγνωριστικό άρθρου: 319350 - Τελευταία αναθεώρηση: 12/07/2015 09:15:48 - Αναθεώρηση: 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

  • kbnosurvey kbarchive kbhowtomaster kbmt KB319350 KbMtel
Σχόλια