找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 2646|回复: 6

VB 获取任意文件默认图标

[复制链接]

13

主题

49

回帖

513

积分

用户组: 大·技术宅

UID
2285
精华
0
威望
39 点
宅币
362 个
贡献
11 次
宅之契约
0 份
在线时间
36 小时
注册时间
2017-2-25
发表于 2017-11-29 16:45:25 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
  1. Private Type SHFILEINFO
  2.     hIcon As Long                       '  out: icon
  3.     iIcon As Long                       '  out: icon index
  4.     dwAttributes As Long                '  out: SFGAO_ flags
  5.     szDisplayName As String * 260       '  out: display name (or path)
  6.     szTypeName As String * 80           '  out: type name
  7. End Type
  8. Public Declare Function SHGetFileInfo Lib "shell32.dll" Alias "SHGetFileInfoA" (ByVal pszPath As String, ByVal dwFileAttributes As Long, psfi As SHFILEINFO, ByVal cbFileInfo As Long, ByVal uFlags As Long) As Long
  9. Public Declare Function DrawIcon Lib "user32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal hIcon As Long) As Long

  10. Private Function 获取文件类型图标(t3 As String) As Long
  11.     Dim FI As SHFILEINFO
  12.     Dim ts As String
  13.    
  14.     ts = App.Path & "tmp." & t3     '自动生成临时文件路径与文件名
  15.     Open ts For Binary As #1    '创建文件
  16.     Close #1                    '关闭文件,此时产生空文件
  17.    
  18.     SHGetFileInfo ts, 0, FI, Len(FI), &H100     '获取类型图标
  19.    
  20.     Kill ts                     '删除文件
  21.    
  22.     'DrawIcon Picture1.hdc, 0, 0, FI.hIcon  '可以用此函数显示出来
  23.     获取文件类型图标 = FI.hIcon             '返回句柄,接下来可以用DrawIcon来显示
  24. End Function
复制代码
回复

使用道具 举报

13

主题

49

回帖

513

积分

用户组: 大·技术宅

UID
2285
精华
0
威望
39 点
宅币
362 个
贡献
11 次
宅之契约
0 份
在线时间
36 小时
注册时间
2017-2-25
 楼主| 发表于 2017-11-29 16:55:12 | 显示全部楼层
有一个手误,里面的Path改为app.path & "\tmp." & t3,这里的t3为扩展名
回复 赞! 靠!

使用道具 举报

1110

主题

1651

回帖

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
244
威望
743 点
宅币
24221 个
贡献
46222 次
宅之契约
0 份
在线时间
2296 小时
注册时间
2014-1-26
发表于 2017-12-4 07:05:02 | 显示全部楼层
乘简 发表于 2017-11-29 16:55
有一个手误,里面的Path改为app.path & "\tmp." & t3,这里的t3为扩展名

然而你并没有把DeleteObject也声明了。。这个图标是需要销毁的。

点评

谢谢指出不足啊。。。  发表于 2017-12-5 13:39
回复 赞! 靠!

使用道具 举报

0

主题

5

回帖

15

积分

用户组: 初·技术宅

UID
4626
精华
0
威望
2 点
宅币
6 个
贡献
0 次
宅之契约
0 份
在线时间
0 小时
注册时间
2019-1-9
发表于 2020-7-2 19:14:03 | 显示全部楼层
不错  好东西
回复 赞! 靠!

使用道具 举报

1

主题

60

回帖

333

积分

用户组: 中·技术宅

UID
6035
精华
0
威望
2 点
宅币
266 个
贡献
0 次
宅之契约
0 份
在线时间
29 小时
注册时间
2020-7-7
发表于 2020-7-9 17:20:21 | 显示全部楼层
来支持一下
回复 赞! 靠!

使用道具 举报

0

主题

16

回帖

68

积分

用户组: 小·技术宅

UID
3431
精华
0
威望
2 点
宅币
48 个
贡献
0 次
宅之契约
0 份
在线时间
17 小时
注册时间
2018-2-5
发表于 2021-4-10 16:45:06 | 显示全部楼层
这个Kill ts,我以为把文件也删除了。
回复 赞! 靠!

使用道具 举报

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-4-19 06:30 , Processed in 0.039124 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表