主要用到两个函数
Win32 API : ExtractIconEx(...)
和 ExtractIcon(...)
这个函数有两个作用
- 获取 Exe 中图标的数量
- 获取 Exe 文件中的图标,返回类型为
HICON
用法
# 获取图标数量
icon_count = win32gui.ExtractIconEx(r'BaiduNetdisk.exe', -1, 0)
# 获取图标句柄
h_icon = win32gui.ExtractIcon(0, r'BaiduNetdisk.exe', index)
Qt 函数:将图标句柄转换为文件
QtWin.fromHICON(HICON)
返回值为 QPixmap
例程
if __name__ == '__main__':
# 需要一个 QApplication ,QaFileIconProvider 才能使用
app = QApplication(sys.argv)
icon_count = win32gui.ExtractIconEx( r'BaiduNetdisk.exe', -1, 0)
for idx in range(icon_count):
h_icon = win32gui.ExtractIcon(0, r'BaiduNetdisk.exe', idx)
QtWin.fromHICON(h_icon).save(str(idx) + '.ico')
app.quit()