wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在Windows上使用Python更改文件夹图标?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我想编写一个实用程序脚本,用于更改具有特定名称的文件夹图标.这在 python中可能吗?如果没有,还有其他方法吗? 谢谢 import os import ctypes from ctypes import POINTER, Structure, c_wchar, c_int, sizeof, byref from ctypes.wintypes import BYTE, WORD, DWORD,
我想编写一个实用程序脚本,用于更改具有特定名称文件夹图标.这在 python中可能吗?如果没有,还有其他方法吗?

谢谢

解决方法

import os
import ctypes
from ctypes import POINTER,Structure,c_wchar,c_int,sizeof,byref
from ctypes.wintypes import BYTE,WORD,DWORD,LPWSTR,LPSTR
import win32api    

HICON = c_int
LPTSTR = LPWSTR
TCHAR = c_wchar
MAX_PATH = 260
FCSM_ICONFILE = 0x00000010
FCS_FORCEWRITE = 0x00000002
SHGFi_iCONLOCATION = 0x000001000    

class GUID(StructurE):
    _fields_ = [
        ('Data1',DWORD),('Data2',WORD),('Data3',('Data4',BYTE * 8)]

class SHFOLDERCUSTOMSETTinGS(StructurE):
    _fields_ = [
        ('dwSize',('dwMask',('pvid',POINTER(GUID)),('pszWebViewTemplate',LPTSTR),('cchWebViewTemplate',('pszWebViewTemplateVersion',('pszInfoTip',('cchInfoTip',('pclsid',('dwFlags',('pszIconFile',('cchIconFile',('iIconIndex',c_int),('pszlogo',('cchlogo',DWORD)]

class SHFILEINFO(StructurE):
    _fields_ = [
        ('hIcon',HICON),('iIcon',('dwAttributes',('szDisplayName',TCHAR * MAX_PATH),('szTypename',TCHAR * 80)]    

def seticon(folderpath,iconpath,iconindeX):
    """Set folder icon.

    >>> seticon(".","C:\\Windows\\system32\\SHelL32.dll",10)

    """
    sHell32 = ctypes.windll.sHell32

    folderpath = unicode(os.path.abspath(folderpath),'mbcs')
    iconpath = unicode(os.path.abspath(iconpath),'mbcs')

    fcs = SHFOLDERCUSTOMSETTinGS()
    fcs.dwSize = sizeof(fcs)
    fcs.dwMask = FCSM_ICONFILE
    fcs.pszIconFile = iconpath
    fcs.cchIconFile = 0
    fcs.iIconIndex = iconindex

    hr = sHell32.SHGetSetFolderCustomSetTings(byref(fcs),folderpath,FCS_FORCEWRITE)
    if hr:
        raise WindowsError(win32api.Formatmessage(hr))

    sfi = SHFILEINFO()
    hr = sHell32.SHGetFileInfoW(folderpath,byref(sfi),sizeof(sfi),SHGFi_iCONLOCATION)
    if hr == 0:
        raise WindowsError(win32api.Formatmessage(hr))

    index = sHell32.SHell_GetCachedImageIndexW(sfi.szDisplayName,sfi.iIcon,0)
    if index == -1:
        raise WindowsError()

    sHell32.SHupdateImageW(sfi.szDisplayName,indeX)

大佬总结

以上是大佬教程为你收集整理的如何在Windows上使用Python更改文件夹图标?全部内容,希望文章能够帮你解决如何在Windows上使用Python更改文件夹图标?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。