Как использовать функцию SHGetFileInfo для получения значков, связанных с файлами в Visual C# .NET

Переводы статьи Переводы статьи
Код статьи: 319350 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Аннотация

В этой статье описывается, как использовать функцию SHGetFileInfo для получения значков, связанных с файлами.

Создание приложения Windows Forms

  1. Запустите Microsoft Visual Studio .NET.
  2. В меню Файл выберите команду Создать, а затем — пункт Проект
  3. В диалоговом окне Новый проектТипы проектоввыберите вариант Проекты Visual C# , а в области Шаблонывыберите Приложение Windows .
  4. В поле имя введите GetIconSample.

Используйте функцию SHGetFileInfo

  1. Добавьте следующий код в файле Form1.cs в конце операторов USING .
    using System.Runtime.InteropServices;
    					
  2. Добавьте следующий код после класса Form1 пространства имен 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. Добавьте следующий код в класс Form1 после ЧАСТНЫХ операторов:
    private int nIndex = 0;
    					
  4. Добавьте в форму элемент управления listView , элемент управления button и элемент управления imageList . По умолчанию называются imageList1, listView1 и button1 соответственно.
  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. Нажмите кнопку выбрать файл, а затем выберите файл в диалоговом окне Открытие документа. Имя файла и значок, связанный с файлом отображается в элементе управления ListView .

Ссылки

Дополнительные сведения в этой статье версии Microsoft Visual Basic .NET щелкните следующий номер статьи базы знаний Майкрософт:
319340 Как использовать функцию SHGetFileInfo для получения значков, связанных с файлами, в Visual Basic .NET

Свойства

Код статьи: 319350 - Последний отзыв: 23 ноября 2013 г. - Revision: 5.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 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Данная статья переведена с использованием программного обеспечения Майкрософт для машинного перевода и, возможно, отредактирована посредством технологии Community Translation Framework (CTF). Корпорация Майкрософт предлагает вам статьи, обработанные средствами машинного перевода, отредактированные членами сообщества Майкрософт и переведенные профессиональными переводчиками, чтобы вы могли ознакомиться со всеми статьями нашей базы знаний на нескольких языках. Статьи, переведенные с использованием средств машинного перевода и отредактированные сообществом, могут содержать смысловое, синтаксические и (или) грамматические ошибки. Корпорация Майкрософт не несет ответственности за любые неточности, ошибки или ущерб, вызванные неправильным переводом контента или его использованием нашими клиентами. Подробнее об CTF можно узнать по адресу http://support.microsoft.com/gp/machine-translation-corrections/ru.
Эта статья на английском языке: 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