Windows资源管理器覆盖图标 - 如何开始?

时间:2016-05-18 07:28:39

标签: c++ windows icons overlay explorer

我目前正在尝试使用Visual C ++为Windows资源管理器实现叠加图标。为此,我阅读了有关Microsoft MSDN的信息(说我必须实现IShellIconOverlayIdentifier)以及互联网上的其他一些资源。

我的问题是,我无法让程序运行。我认为,当我能够简单地显示任何图标时,实现选择正确图标的逻辑没有问题。

首先我尝试创建一个Windows服务,但似乎我无法实现该接口。现在我改为DLL并且不再有任何编译器错误,但是当我尝试注册时,它表示模块已加载,但未找到入口点DllRegisterServer。问题似乎是我没有COM服务器,但我真的需要吗?

我还在CodeProject.com上找到了一个指南,该指南也没有任何编译器错误,但只显示没有任何错误的图标。

那么,任何人都可以简要总结一下如何使用Visual Studio和C ++开始实现Overlay Icons(服务/ DLL / ...,要设置的任何编译器选项,显示简单图标所需的最少代码) ?

1 个答案:

答案 0 :(得分:0)

"图标"你指的是资源管理器流程中显示的图标。这意味着您在另一个流程中成为访客,并且您必须按照他们的规则行事。

如果你理解这一点,那么很清楚为什么你的代码不能在服务中工作。服务不是资源管理器进程。

如果您理解这一点,就必须清楚为什么必须提供DllRegisterServer()。资源管理器称之为。

C ++编译器不了解Explorer.EXE的特定规则。但是,您可以通过将头文件包含在其定义的位置来告诉编译器IShellIconOverlayIdentifier。这将告诉编译器它实际上是一个COM接口。

在尝试复杂的操作之前,您可能应该从简单的COM示例开始,例如向控件之外的另一个进程提供图标。您无法在调试模式下编译Explorer.EXE,因此您只能看到任何问题的一半。