Todo: 集成多平台 解决因SaiNiu线程抢占资源问题 本地提交测试环境打包 和 正式打包脚本与正式环境打包bat 提交Python32环境包 改进多日志文件生成情况修改打包日志细节

This commit is contained in:
2025-09-18 15:52:03 +08:00
parent 8b9fc925fa
commit 7cfc0c22b7
7608 changed files with 2424791 additions and 25 deletions

View File

@@ -0,0 +1,68 @@
"""
Demonstrates how to propagate a folder's view state to all its subfolders
The format of the ColInfo stream is apparently undocumented, but
it can be read raw from one folder and copied to another's view state.
"""
import os
import sys
import pythoncom
from win32com.shell import shell, shellcon
template_folder = os.path.split(sys.executable)[0]
print("Template folder:", template_folder)
template_pidl = shell.SHILCreateFromPath(template_folder, 0)[0]
template_pb = shell.SHGetViewStatePropertyBag(
template_pidl,
"Shell",
shellcon.SHGVSPB_FOLDERNODEFAULTS,
pythoncom.IID_IPropertyBag,
)
# Column info has to be read as a stream
# This may blow up if folder has never been opened in Explorer and has no ColInfo yet
template_iunk = template_pb.Read("ColInfo", pythoncom.VT_UNKNOWN)
template_stream = template_iunk.QueryInterface(pythoncom.IID_IStream)
streamsize = template_stream.Stat()[2]
template_colinfo = template_stream.Read(streamsize)
def update_colinfo(not_used, dir_name, fnames):
for fname in fnames:
full_fname = os.path.join(dir_name, fname)
if os.path.isdir(full_fname):
print(full_fname)
pidl = shell.SHILCreateFromPath(full_fname, 0)[0]
pb = shell.SHGetViewStatePropertyBag(
pidl,
"Shell",
shellcon.SHGVSPB_FOLDERNODEFAULTS,
pythoncom.IID_IPropertyBag,
)
## not all folders already have column info, and we're replacing it anyway
pb.Write("ColInfo", template_stream)
iunk = pb.Read("ColInfo", pythoncom.VT_UNKNOWN)
s = iunk.QueryInterface(pythoncom.IID_IStream)
s.Write(template_colinfo)
s = None
## attribute names read from registry, can't find any way to enumerate IPropertyBag
for attr in (
"Address",
"Buttons",
"Col",
"Vid",
"WFlags",
"FFlags",
"Sort",
"SortDir",
"ShowCmd",
"FolderType",
"Mode",
"Rev",
):
pb.Write(attr, template_pb.Read(attr))
pb = None
os.path.walk(template_folder, update_colinfo, None)