问题标签 [icon-handler]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
shell-extensions - 我的图标处理程序使资源管理器崩溃
我有一个使用 SharpShell 作为图标处理程序的项目。它会在 APK 内部窥视以查找并显示其图标。我已经让它工作了,但有一些副作用。如果我尝试将 APK 重命名为其他名称,例如 from A.apk
to B.apk
,那么 Explorer 就会崩溃,我找不到原因。
这是主要部分和日志记录位:
我的 APK 代码运行aapt d badging "path.apk"
并解析输出以获取图标信息,GetIcon 将 APK 作为 zip 打开以获取该文件。我将它全部包装在一个 try/catch 中并绑定到 SharpShell 的 LogError 方法中,但我从来没有得到任何输出。我禁用了 UAC。我认为写入驱动器的根目录没有权限问题,因为 APKLog.txt 确实显示但没有有用的信息。
我得到窗口“Windows 资源管理器已停止工作”并将此信息列为“问题签名”
我看到它说System.AccessViolationException
,但我的代码都没有捕捉到它。有人可以对这里发生的事情提供一些见解吗?
com - 如何限制特定进程访问图标处理程序?
我的自定义文件有一个图标处理程序。如何限制图标处理程序功能,使其只能由 explorer.exe 线程调用?
c++ - 在 windows xp 系统重启时,explorer.exe 未加载已注册的图标处理程序外壳扩展 dll
masters:我正在尝试通过注册图标处理程序外壳扩展名将 dll 注入 explorer.exe,并将具有指定扩展名的文件放入桌面。在win7下运行良好,在windows xp下就不行了。现象是:
- 当第一次注册扩展时,dll注入成功。
- 重启系统时,explorer.exe 不加载dll。但是如果我用扩展名创建一个新文件,它可以被加载。
我猜是桌面缓存了文件图标的原因,所以它不需要调用 iconhandler 来提取图标。那么如何防止桌面缓存指定文件的图标。
非常感谢你的帮助。
以下是我的部分代码:// CShellIcon
c++ - 如何使用win32 sdk在windows桌面窗口中自定义绘制项目
我在 Windows 桌面窗口中有一个文件。我想自定义绘制它而不是普通的图标和文本。我几乎通过以下步骤来实现它,1.制作一个实现IExtractIcon接口的dll,然后为该文件注册一个图标处理程序shell扩展名,以使该dll由explorer.exe加载。2.在dll的dllmain函数中,子类化桌面窗口,进行自定义绘图。
这几乎可行,但仍然存在一些问题: 1. 在 winxp 中,dll 仅加载一次。重新启动PC后,不会加载dll,除非我制作了另一个具有相同扩展名的文件。我猜原因是桌面已经缓存了图标,所以它不需要加载 dll 来提取图标。但是为什么win7有效。我该怎么做才能使系统始终加载 dll?
- 该文件在文件系统中总是有一个扩展名,但是当它显示在桌面上时,可能不会显示该扩展名。如何根据桌面列表视图项获取文件的全名?
或者有没有其他方法可以让 explorer.exe 自动加载我的 dll?
这是 IExtractIcon 代码:
windows - 图标处理程序显示黑色图标
我正在使用 Sharpshell 更改我的 pdf 和 xlsx 图标。大多数时候它工作正常,但有时它显示黑色图标。刷新或重新启动资源管理器对其没有影响。
此外,它在某些图标视图中运行良好 - 例如在详细信息、内容中运行良好,但在中等图标或磁贴中运行良好。此外,这些图标在服务器管理器工具中也能正常工作。
还有一件事 - 如果我更改具有黑色图标的文件的名称,正确的图标会立即出现。
这是代码:
这是更简单的版本。我将处理数百个图标。有人有什么建议吗?
编辑:我现在看到图标是随机分配的。每当我清除图标缓存时,都会显示一些随机图标。有时什么都没有,所以它变成全黑或全白。服务器管理器工具中也发生了同样的事情。请帮忙!
python - _com_interfaces_ 做什么?
我正在尝试了解pywin32的 COM 服务器示例,并且在win32comext/shell/demos/servers/icon_handler.py
我看到了这条线
虽然这很明显是指必须IconHandler
实现IExtractIcon
andIPersistFile
接口,但我找不到任何实际使用的文档。 _com_interfaces_
在win32com.server.register
or中看不到它win32com.server.localserver.py
,因此注册和服务器调用似乎都没有真正使用它。是否有任何文件_com_interfaces_
?