كيفية استخدام الدالة SHGetFileInfo للحصول على رموز مقترنة بالملفات في Visual C#.NET

ملخص

توضح هذه المقالة خطوة بخطوة كيفية استخدام الدالة SHGetFileInfo للحصول على رموز مقترنة بالملفات.

إنشاء تطبيق Windows Forms

  1. Microsoft Visual Studio.NET.بدء تشغيل
  2. من القائمة ملف، أشر إلى جديد ثم انقر فوق المشروع.
  3. في مربع الحوار مشروع جديد ، انقر فوق مشاريع Visual C# ضمن أنواع المشاريع، ومن ثم انقر فوق تطبيق Windows ضمن قوالب.
  4. في المربع الاسم ، اكتب جيتيكونسامبلي.

استخدم الدالة SHGetFileInfo

  1. أضف التعليمات البرمجية التالية في ملف Form1.cs في نهاية عبارات USING .
    using System.Runtime.InteropServices;
  2. أضف التعليمات البرمجية التالية بعد فئة Form1 مساحة الاسم جيتيكونسامبلي .
    [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":

كيفية استخدام الدالة SHGetFileInfo للحصول على رموز مقترنة بالملفات في Visual Basic.NET 319340

خصائص

رقم الموضوع: 319350 - آخر مراجعة: 19‏/01‏/2017 - المراجعة: 1

تعليقات