问题标签 [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.

0 投票
1 回答
793 浏览

shell-extensions - 我的图标处理程序使资源管理器崩溃

我有一个使用 SharpShell 作为图标处理程序的项目。它会在 APK 内部窥视以查找并显示其图标。我已经让它工作了,但有一些副作用。如果我尝试将 APK 重命名为其他名称,例如 from A.apkto B.apk,那么 Explorer 就会崩溃,我找不到原因。

这是主要部分和日志记录位:

我的 APK 代码运行aapt d badging "path.apk"并解析输出以获取图标信息,GetIcon 将 APK 作为 zip 打开以获取该文件。我将它全部包装在一个 try/catch 中并绑定到 SharpShell 的 LogError 方法中,但我从来没有得到任何输出。我禁用了 UAC。我认为写入驱动器的根目录没有权限问题,因为 APKLog.txt 确实显示但没有有用的信息。

我得到窗口“Windows 资源管理器已停止工作”并将此信息列为“问题签名”

我看到它说System.AccessViolationException,但我的代码都没有捕捉到它。有人可以对这里发生的事情提供一些见解吗?

0 投票
1 回答
75 浏览

com - 如何限制特定进程访问图标处理程序?

我的自定义文件有一个图标处理程序。如何限制图标处理程序功能,使其只能由 explorer.exe 线程调用?

0 投票
0 回答
94 浏览

c++ - 在 windows xp 系统重启时,explorer.exe 未加载已注册的图标处理程序外壳扩展 dll

masters:我正在尝试通过注册图标处理程序外壳扩展名将 dll 注入 explorer.exe,并将具有指定扩展名的文件放入桌面。在win7下运行良好,在windows xp下就不行了。现象是:

  1. 当第一次注册扩展时,dll注入成功。
  2. 重启系统时,explorer.exe 不加载dll。但是如果我用扩展名创建一个新文件,它可以被加载。

我猜是桌面缓存了文件图标的原因,所以它不需要调用 iconhandler 来提取图标。那么如何防止桌面缓存指定文件的图标。

非常感谢你的帮助。

以下是我的部分代码:// CShellIcon

0 投票
0 回答
261 浏览

c++ - 如何使用win32 sdk在windows桌面窗口中自定义绘制项目

我在 Windows 桌面窗口中有一个文件。我想自定义绘制它而不是普通的图标和文本。我几乎通过以下步骤来实现它,1.制作一个实现IExtractIcon接口的dll,然后为该文件注册一个图标处理程序shell扩展名,以使该dll由explorer.exe加载。2.在dll的dllmain函数中,子类化桌面窗口,进行自定义绘图。

这几乎可行,但仍然存在一些问题: 1. 在 winxp 中,dll 仅加载一次。重新启动PC后,不会加载dll,除非我制作了另一个具有相同扩展名的文件。我猜原因是桌面已经缓存了图标,所以它不需要加载 dll 来提取图标。但是为什么win7有效。我该怎么做才能使系统始终加载 dll?

  1. 该文件在文件系统中总是有一个扩展名,但是当它显示在桌面上时,可能不会显示该扩展名。如何根据桌面列表视图项获取文件的全名?

或者有没有其他方法可以让 explorer.exe 自动加载我的 dll?

这是 IExtractIcon 代码:

0 投票
0 回答
276 浏览

windows - 图标处理程序显示黑色图标

我正在使用 Sharpshell 更改我的 pdf 和 xlsx 图标。大多数时候它工作正常,但有时它显示黑色图标。刷新或重新启动资源管理器对其没有影响。

此外,它在某些图标视图中运行良好 - 例如在详细信息、内容中运行良好,但在中等图标或磁贴中运行良好。此外,这些图标在服务器管理器工具中也能正常工作。

还有一件事 - 如果我更改具有黑色图标的文件的名称,正确的图标会立即出现。

这是代码:

这是更简单的版本。我将处理数百个图标。有人有什么建议吗?

编辑:我现在看到图标是随机分配的。每当我清除图标缓存时,都会显示一些随机图标。有时什么都没有,所以它变成全黑或全白。服务器管理器工具中也发生了同样的事情。请帮忙!

0 投票
1 回答
166 浏览

python - _com_interfaces_ 做什么?

我正在尝试了解的 COM 服务器示例,并且在win32comext/shell/demos/servers/icon_handler.py我看到了这条线

虽然这很明显是指必须IconHandler实现IExtractIconandIPersistFile接口,但我找不到任何实际使用的文档。 _com_interfaces_win32com.server.registeror中看不到它win32com.server.localserver.py,因此注册和服务器调用似乎都没有真正使用它。是否有任何文件_com_interfaces_