如何通过ctypes或PyWin32调用SHChangeNotify实现C示例代码同等功能
Python调用SHChangeNotify接口实现方案
下面提供两种常用的实现方式,效果与参考C代码完全一致:
方案一:使用Python自带ctypes实现(无需额外安装依赖)
import ctypes from ctypes import wintypes # 定义接口所需常量 SHCNE_UPDATEITEM = 0x00002000 SHCNF_PATH = 0x0001 # 加载系统shell32库 shell32 = ctypes.WinDLL('shell32.dll', use_last_error=True) # 声明函数参数类型,避免调用出错 shell32.SHChangeNotify.argtypes = [ wintypes.LONG, wintypes.UINT, wintypes.LPCVOID, wintypes.LPCVOID ] shell32.SHChangeNotify.restype = None # 替换为你需要更新的目标路径 target_path = r"C:\Your-Folder" # 中文路径建议使用SHCNF_PATHW(值为0x0005),直接传Unicode字符串即可无需编码 shell32.SHChangeNotify(SHCNE_UPDATEITEM, SHCNF_PATH, target_path.encode('gbk'), None)
方案二:使用PyWin32库实现(接口封装更完善)
首先执行安装命令:pip install pywin32
实现代码:
from win32com.shell import shell, shellcon target_path = r"C:\Your-Folder" shell.SHChangeNotify( shellcon.SHCNE_UPDATEITEM, shellcon.SHCNF_PATH, target_path, None )
内容的提问来源于stack exchange,提问作者humantrash
相关产品推荐
相关产品推荐

