Dosyalar Visual C# .NET ile ilişkili simgelerin almak için SHGetFileInfo işlevi nasıl kullanılır

Makale çevirileri Makale çevirileri
Makale numarası: 319350 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Bu adım adım makalede, SHGetFileInfo işlevi dosyalarla ilişkili simgelerin almak için nasıl kullanılacağını açıklar.

Windows Forms uygulaması oluşturma

  1. Microsoft Visual Studio .NET'i başlatın.
  2. Dosya menüsünde Yeni ' nin üzerine gelin ve sonra Project ' i tıklatın.
  3. Yeni proje) iletişim kutusunda, Project Types altında Visual C# Projects ' ı tıklatın ve şablonları altında Windows uygulama ' yı tıklatın.
  4. Ad kutusuna GetIconSample yazın.

SHGetFileInfo işlevini kullanın.

  1. Ifadeleri KULLANMA sonunda <a1>Form1.cs</a1> dosyasında aşağıdaki kodu ekleyin.
    using System.Runtime.InteropServices;
    					
  2. Form1 sınıfı GetIconSample ad alanının, sonra aşağıdaki kodu ekleyin.
    [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. Aşağıdaki kodu Form1 sınıfında PRIVATE ifadelerden sonra ekleyin:
    private int nIndex = 0;
    					
  4. Bir liste görünümü denetimi, bir Düğme denetimi ve bir imageList denetimi forma ekleyin. Varsayılan listView1 button1 ve imageList1 sırasıyla adlarıdır.
  5. Button1 Properties penceresinde, bir dosya seç düğmesinin metni ayarlayın ve sonra da <a2>button1_click</a2> olay aşağıdaki kodu ekleyin:
    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++); 
    }
    					

Projeyi çalıştırın

  1. Projeyi derlemek: Oluştur) menüsünde, Build Solution ' ı tıklatın.
  2. F5 tuşuna basarak projeyi çalıştırın.
  3. Bir dosya seç ' i tıklatın ve sonra da iletişim kutusuna bir dosya seçin. Adı ve dosya ile ilişkilendirilmiş simgeyi ListView denetiminde görünür.

Referanslar

Bu makalenin Microsoft Visual Basic. NET'te bir sürümünde daha fazla bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
319340Visual Basic. NET'te dosyalarla ilişkili simgelerin almak için SHGetFileInfo işlevi nasıl kullanılır

Özellikler

Makale numarası: 319350 - Last Review: 22 Eylül 2006 Cuma - Gözden geçirme: 2.3
Bu makaledeki bilginin uygulandığı durum:
  • 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
Anahtar Kelimeler: 
kbmt kbhowtomaster KB319350 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:319350

Geri Bildirim Ver

 

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