在Python中使图标覆盖在机器重新启动后保持不变
所以,多亏了Tim Golden和其他人,我有了一个脚本,可以根据文件和文件夹的“状态”显示覆盖图,类似于Tortoise SVN或Dropbox 我的问题是,一旦我重新启动explorer.exe进程或操作系统本身并打开explorer,就不再有任何覆盖 我的第一个想法是:在Python中使图标覆盖在机器重新启动后保持不变,python,windows,com,overlay,Python,Windows,Com,Overlay,所以,多亏了Tim Golden和其他人,我有了一个脚本,可以根据文件和文件夹的“状态”显示覆盖图,类似于Tortoise SVN或Dropbox 我的问题是,一旦我重新启动explorer.exe进程或操作系统本身并打开explorer,就不再有任何覆盖 我的第一个想法是: 让实际管理文件状态的服务检测到没有请求进入,只需重新注册覆盖处理程序 这里的问题是注册需要提升权限,这在最终用户初次安装应用程序时是可以接受的,但不是每次重新启动计算机时都可以接受 有人能告诉我这里可能遗漏了什么吗?
- 让实际管理文件状态的服务检测到没有请求进入,只需重新注册覆盖处理程序
subprocess.check_call(script_path, shell=True)
浏览器不能重新加载脚本,因为它是Python吗?我需要编译成DLL或EXE吗?这会改变注册过程吗
这是注册电话:
win32com.server.register.UseCommandLine(BaseOverlay)
下面是课程(简化):
class BaseOverlay:
_reg_clsid_ = '{8D4B1C5D-F8AC-4FDA-961F-A0143CD97C41}'
_reg_progid_ = 'someoverlays'
_reg_desc_ = 'Icon Overlay Handler'
_public_methods_ = ['GetOverlayInfo', 'GetPriority', 'IsMemberOf']
_com_interfaces_ = [shell.IID_IShellIconOverlayIdentifier]
def GetOverlayInfo(self):
return icon_path, 0, shellcon.ISIOI_ICONFILE
def GetPriority(self):
return 50
def IsMemberOf(self, fname, attributes):
return winerror.S_OK