按文件类型取图标

 1  ' 以下在.Bas
 2  Option   Explicit
 3  Public   Const  SHGFI_DISPLAYNAME  =   & H200
 4  Public   Const  SHGFI_EXETYPE  =   & H2000
 5  Public   Const  SHGFI_LARGEICON  =   & H0
 6  Public   Const  SHGFI_SHELLICONSIZE  =   & H4
 7  Public   Const  SHGFI_SMALLICON  =   & H1
 8  Public   Const  SHGFI_SYSICONINDEX  =   & H4000
 9  Public   Const  SHGFI_TYPENAME  =   & H400
10  Public   Const  BASIC_SHGFI_FLAGS  =  SHGFI_TYPENAME  Or  SHGFI_SHELLICONSIZE  Or  SHGFI_SYSICONINDEX  Or  SHGFI_DISPLAYNAME  Or  SHGFI_EXETYPE
11  Public   Const  MAX_PATH  =   260
12  Public   Const  ILD_TRANSPARENT  =   & H1
13  Public  Type SHFILEINFO
14     hIcon  As   Long
15     iIcon  As   Long
16     dwAttributes  As   Long
17     szDisplayName  As   String   *  MAX_PATH
18     szTypeName  As   String   *   80
19  End  Type
20  Public  Declare  Function  SHGetFileInfo Lib _
21      " shell32.dll "  Alias  " SHGetFileInfoA "  _
22     (ByVal pszPath  As   String , _
23      ByVal dwFileAttributes  As   Long , _
24      psfi  As  SHFILEINFO, _
25      ByVal cbSizeFileInfo  As   Long , _
26      ByVal uFlags  As   Long As   Long
27  Public  Declare  Function  ImageList_Draw Lib  " comctl32.dll "  _
28     (ByVal himl  As   Long , ByVal i  As   Long , _
29      ByVal hDCDest  As   Long , ByVal x  As   Long , _
30      ByVal y  As   Long , ByVal flags  As   Long As   Long
31  Public  shinfo  As  SHFILEINFO
32  Public   Const  SHGFI_USEFILEATTRIBUTES  =   & H10
33  Public   Const  SHGFI_ICON  =   & H100
34 
35 
36  ' FORM中  控件    Picture1 、Picture1 、Text1    代码
37 
38 
39  Private   Sub  Picture2_Click()
40  VB.SavePicture Picture2, App.Path  &   " \ico.ico "
41  End Sub
42 
43  Private   Sub  Text1_Change()
44      Dim  hImgSmall  As   Long
45      Dim  fName  As   String
46      Dim  r  As   Long
47      Dim  hImgLarge  As   Long
48      Dim  Info1  As   String , Info2  As   String
49     fName  =  Text1.Text
50     hImgSmall &   =  SHGetFileInfo(fName$,  0 & , shinfo,  Len (shinfo), SHGFI_ICON  Or  SHGFI_SMALLICON  Or  SHGFI_SYSICONINDEX  Or  SHGFI_USEFILEATTRIBUTES)
51     hImgLarge &   =  SHGetFileInfo(fName$,  0 & , shinfo,  Len (shinfo), SHGFI_ICON  Or  BASIC_SHGFI_FLAGS  Or  SHGFI_SYSICONINDEX  Or  SHGFI_USEFILEATTRIBUTES)
52     Info1  =   Left $(shinfo.szDisplayName,  InStr (shinfo.szDisplayName,  Chr $( 0 ))  -   1 )
53     Info2  =   Left $(shinfo.szTypeName,  InStr (shinfo.szTypeName,  Chr $( 0 ))  -   1 )
54     Debug.Print Info1; Info2
55     Picture1.Picture  =   LoadPicture ()
56     Picture1.AutoRedraw  =   True
57     Picture2.Picture  =   LoadPicture ()
58     Picture2.AutoRedraw  =   True
59     r  =  ImageList_Draw(hImgSmall & , shinfo.iIcon, Picture1.hDC,  0 0 , ILD_TRANSPARENT)
60     r  =  ImageList_Draw(hImgLarge & , shinfo.iIcon, Picture2.hDC,  3 3 , ILD_TRANSPARENT)
61      Set  Picture1.Picture  =  Picture1.Image
62      Set  Picture2.Picture  =  Picture2.Image
63  End Sub
64 
65 

 

转载于:https://www.cnblogs.com/xxaxx/archive/2009/12/29/1635314.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值