SHGetFileInfo 함수를 Visual C# .NET 파일과 연결된 아이콘을 가져올 수 방법

기술 자료 번역 기술 자료 번역
기술 자료: 319350 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

이 페이지에서

요약

이 문서에서는 SHGetFileInfo 함수를 사용하여 파일과 관련된 아이콘 가져오는 방법에 대해 설명합니다.

Windows Forms 응용 프로그램 만들기

  1. Microsoft Visual Studio .NET 시작하십시오.
  2. 파일 메뉴에서 새로 만들기를 가리킨 다음 프로젝트 를 클릭하십시오.
  3. 새 프로젝트 대화 상자의 프로젝트 형식Visual C# 프로젝트 클릭한 다음 템플릿 에서 Windows 응용 프로그램 을 누릅니다.
  4. 이름 상자에 GetIconSample를 입력하십시오.

SHGetFileInfo 함수 사용

  1. USING 문 끝에 Form1.cs 파일에 다음 코드를 추가합니다.
    using System.Runtime.InteropServices;
    					
  2. GetIconSample 네임스페이스 Form1 클래스 뒤에 다음 코드를 추가합니다.
    [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 문 다음에 추가합니다:
    private int nIndex = 0;
    					
  4. 목록 컨트롤, 단추 컨트롤 및 imageList 컨트롤을 폼에 추가하십시오. 기본 이름은 각각 button1, listView1 및 imageList1 있습니다.
  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 버전의 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
319340SHGetFileInfo 함수를 Visual Basic .NET 에서 파일과 연결된 아이콘을 가져올 수 방법

속성

기술 자료: 319350 - 마지막 검토: 2006년 9월 22일 금요일 - 수정: 2.3
본 문서의 정보는 다음의 제품에 적용됩니다.
  • 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
키워드:?
kbmt kbhowtomaster KB319350 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

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