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

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

Эта статья на английском языке: 319350
Эта статья помещена в архив. Она предлагается "как есть" и обновляться не будет.
Аннотация
В этой статье описывается, как использовать функцию SHGetFileInfo для получения значков, связанных с файлами.

back to the top

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

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

Используйте функцию 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 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. Нажмите кнопку выбрать файл, а затем выберите файл в диалоговом окне Открытие документа. Имя файла и значок, связанный с файлом отображается в элементе управления ListView .
back to the top
Ссылки
Дополнительные сведения в этой статье версии Microsoft Visual Basic .NET щелкните следующий номер статьи базы знаний Майкрософт:
319340 Как использовать функцию SHGetFileInfo для получения значков, связанных с файлами, в Visual Basic .NET
back to the top

Свойства

Номер статьи: 319350 — последний просмотр: 12/07/2015 09:15:53 — редакция: 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

  • kbnosurvey kbarchive kbhowtomaster kbmt KB319350 KbMtru
Отзывы и предложения