EldoS | Feel safer!

Software components for data protection, secure storage and transfer

Icon in Windows Explorer

Also by EldoS: CallbackDisk
Create virtual disks backed by memory or custom location, expose disk images as disks and more.
Posted: 10/26/2009 17:47:44
by Sid Schipper (Standard support level)
Joined: 03/14/2008
Posts: 285

When viewing a folder in Windows Explorer, Windows puts a little icon in front of each item indicating what the item is. So, for example, a folder has the little yellow folder icon next to it, a Word file shows the "W" icon indicating a "Word" document, etc. The icon it uses is set in the "Folder Options" in the Windows Control Panel and depends upon the extension of the file, although there are some icons, like the folder icon and shortcut icons, that do not depend upon an extension. Is there some way in the Enumerate Directory callback to pass back an Icon to the driver that will then get displayed by Windows when showing the file?
Posted: 10/27/2009 01:41:06
by Eugene Mayevski (Team)

I think this can be done via shell extension, but shell programming is a tricky and almost undocumented. So even if it's made, this will happen much later.

Sincerely yours
Eugene Mayevski
Posted: 10/27/2009 03:54:00
by Tim Hayes (Standard support level)
Joined: 06/06/2007
Posts: 36


Tried working on this one myself without success.

I use the ShellPlus extensions VCL toolkit which has components for override of Icons and Icon Overlays. Icon Overlays can be worked dynamically, but the base Icon is fixed. When I tried to force a run-time override Windows Shell rejected the change - basically all Icons seem to have been loaded during boot or on Shell restart.

I came to the conclusion that I would need to provide my own Explorer program which I have done, allowing me to add extra icons into the ListView. Used the Jam Software components. However I left the base Icon unchanged as it would also show up in other explorer windows and confuse the user.

I would be interested in any working solution you find.
Tim Hayes
Posted: 10/27/2009 12:28:38
by Sid Schipper (Standard support level)
Joined: 03/14/2008
Posts: 285

Thanks for the replies, I will let you know if I find anything that works well for this issue.
Posted: 11/04/2009 17:36:13
by Gavin McKay (Standard support level)
Joined: 09/01/2009
Posts: 48

I'm currently using EZShellExtension and EZNamespaceExtension to do exactly that. Been very happy so far, good support, product does what it says on the tin.

I've done some shell extension programming a long time ago, and to be frank - it was awful. These products have given me everything I needed, your milage may vary.

Available from www.ssware.com.
Posted: 11/20/2009 16:14:32
by Sid Schipper (Standard support level)
Joined: 03/14/2008
Posts: 285

There is of course the "desktop.ini" file, but that requires the software to create such a file for each folder on my virtual disk and some of my folders are truly "virtual" in the sense that they just contain data from my database and not real files. In those cases, I would have to create some sort of query or table in the database that would be the virtual "desktop.ini" file, and to do that is difficult at best and maybe impossible.

I'm going to investigate the solution suggested by Gavin above, I'll let you know what I find out. Thank you all for your input.
Posted: 11/21/2009 03:32:29
by Eugene Mayevski (Team)

Actually I don't see a problem in generating desktop.ini on the fly. There's no need to put it to the DB.

Sincerely yours
Eugene Mayevski
Posted: 11/30/2009 17:48:34
by Gavin McKay (Standard support level)
Joined: 09/01/2009
Posts: 48

Sid - if you are following up on EZShellExtension, my #1 tip is to implement a basic text-file logging and/or windows event logging as the first thing you do.

Spent a week trying to debug an issue all because an assembly hadn't been included in the installation set. Once I had implemented logging I realised it had nothing to do with my application, it was .NET not being able to load an assembly it needed!

Apart from that, I have context menus working and am starting on icon overlays. All looks good so far.
Also by EldoS: Rethync
The cross-platform framework that simplifies synchronizing data between mobile and desktop applications and servers and cloud storages



Topic viewed 3908 times

Number of guests: 1, registered members: 0, in total hidden: 0


Back to top

As of July 15, 2016 EldoS business operates as a division of /n software, inc. For more information, please read the announcement.

Got it!