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

Σύνοψη

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

Δημιουργήσετε μια εφαρμογή των Windows φόρμες

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

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

  1. Προσθέστε τον ακόλουθο κώδικα στο αρχείο Form1.cs στο τέλος των καταστάσεων ΧΡΉΣΗ .
    using System.Runtime.InteropServices;
  2. Προσθέστε τον ακόλουθο κώδικα μετά την κλάση Form1 του χώρου ονομάτων GetIconSample .
    [StructLayout(LayoutKind.Sequential)]public struct SHFILEINFO 
    {
    public IntPtr hIcon;
    public int 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. Προσθέστε τον ακόλουθο κώδικα στην κλάση Form1 μετά τις δηλώσεις ΙΔΙΩΤΙΚΟΎ :
    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 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. Κάντε κλικ στην επιλογή αρχείοκαι, στη συνέχεια, επιλέξτε ένα αρχείο στο πλαίσιο διαλόγου " Άνοιγμα ". Το όνομα του αρχείου και το εικονίδιο που σχετίζεται με το αρχείο εμφανίζεται στο στοιχείο ελέγχου ListView .

Αναφορές

Για περισσότερες πληροφορίες σε Microsoft Visual Basic .NET έκδοση αυτού του άρθρου, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:

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

Ιδιότητες

Αναγνωριστικό άρθρου: 319350 - Τελευταία αναθεώρηση: 17 Ιαν 2017 - Αναθεώρηση: 1

Σχόλια