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

기술 자료 번역 기술 자료 번역
기술 자료: 319340 - 이 문서가 적용되는 제품 보기.
이 문서에서는 Microsoft Visual C# .NET 버전에 319350 참조하십시오.
모두 확대 | 모두 축소

이 페이지에서

요약

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

Windows Forms 응용 프로그램 만들기

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

SHGetFileInfo 함수 사용

  1. Form1.vb 파일의 시작 부분에 다음 코드를 추가합니다.
    Imports System.Runtime.InteropServices
    					
  2. INHERITS 문 뒤에 다음 코드를 Form1 클래스에 추가합니다.
    Private Structure SHFILEINFO
            Public hIcon As IntPtr ' : icon
            Public iIcon As Integer ' : icondex
            Public dwAttributes As Integer ' : SFGAO_ flags
            <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)> _
            Public szDisplayName As String
            <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=80)> _
            Public szTypeName As String
    End Structure
    
    Private Declare Ansi Function SHGetFileInfo Lib "shell32.dll" (ByVal pszPath As String, _
    ByVal dwFileAttributes As Integer, ByRef psfi As SHFILEINFO, ByVal cbFileInfo As Integer, _
    ByVal uFlags As Integer) As IntPtr
    
    Private Const SHGFI_ICON = &H100
    Private Const SHGFI_SMALLICON = &H1
    Private Const SHGFI_LARGEICON = &H0         ' Large icon
    Private nIndex = 0
    					
  3. 목록 컨트롤, 단추 컨트롤 및 imageList 컨트롤을 폼에 추가하십시오. 기본 이름은 각각 Button1, ListView1 및 ImageList1 있습니다.
  4. Button1 속성 창에서 단추 텍스트 파일 선택 을 설정하고 다음 Button1_click 이벤트에 다음 코드를 추가하여:
    Dim hImgSmall As IntPtr  'The handle to the system image list.
    Dim hImgLarge As IntPtr  'The handle to the system image list.
    Dim fName As String      'The file name to get the icon from.
    Dim shinfo As SHFILEINFO
    shinfo = New SHFILEINFO()
    Dim openFileDialog1 As OpenFileDialog
    openFileDialog1 = New OpenFileDialog()
    
    openFileDialog1.InitialDirectory = "c:\temp\"
    openFileDialog1.Filter = "All files (*.*)|*.*"
    openFileDialog1.FilterIndex = 2
    openFileDialog1.RestoreDirectory = True
    
    listView1.SmallImageList = imageList1
    listView1.LargeImageList = ImageList1
    
    shinfo.szDisplayName = New String(Chr(0), 260)
    shinfo.szTypeName = New String(Chr(0), 80)
    
    If (openFileDialog1.ShowDialog() = DialogResult.OK) Then
         fName = openFileDialog1.FileName
    
         'Use this to get the small icon.
         hImgSmall = SHGetFileInfo(fName, 0, shinfo, Marshal.SizeOf(shinfo), _
             SHGFI_ICON Or SHGFI_SMALLICON)
    
         'Use this to get the large icon.
         'hImgLarge = SHGetFileInfo(fName, 0, 
         'ref shinfo, (uint)Marshal.SizeOf(shinfo), 
         'SHGFI_ICON | SHGFI_LARGEICON);
    
         'The icon is returned in the hIcon member of the shinfo struct.
         Dim myIcon As System.Drawing.Icon
         myIcon = System.Drawing.Icon.FromHandle(shinfo.hIcon)
    
         imageList1.Images.Add(myIcon) 'Add icon to imageList.
    
         listView1.Items.Add(fName, nIndex) 'Add file name and icon to listview.
         nIndex = nIndex + 1
    End If
    					

프로젝트 실행

  1. 프로젝트를 컴파일하여: 빌드 메뉴에서 솔루션 빌드 를 클릭합니다.
  2. F5를 키를 눌러 프로젝트를 실행합니다.
  3. 파일 선택 을 클릭한 다음 열기 대화 상자에서 파일을 선택하십시오. 파일 이름과 해당 파일과 연결된 아이콘을 ListView 컨트롤에 나타납니다.

참조

이 문서에서는 Microsoft Visual C# .NET 버전의 대해 Microsoft 기술 자료의 문서를 참조하십시오.
319350SHGetFileInfo 함수 파일에서 Visual C# .NET 사용하여 관련 있는 아이콘 가져오기 방법

속성

기술 자료: 319340 - 마지막 검토: 2004년 7월 6일 화요일 - 수정: 2.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • 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 KB319340 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