What do you want to see?

I’m currently working on 2 utilities absolutely unrelated to anything I’m doing here at Microsoft. This isn’t new since I’ve been doing this ever since I got into the industry (even before I was an official “programmer”).  This time I have 2 utilities that I’m creating knowing that when they’re finished, I will use them a lot.  Each of them are close to being finished (just hammering out some defects right now).  So my question to you is, which of the following utilities would you like me to finish first and eventually post here for you to view/use?

1. Bread Crumb Band:  This is a deskband (toolbar) that is used in Internet Explorer and/or Explorer.  The best way to describe is to take the current address you’re viewing (http://www.microsoft.com/directx or C:\windows\assembly for example) and break it up into smaller hyperlinked pieces.  So if you were looking at C:\windows\assembly, you can click on ‘windows’ to navigate to the windows directory or you could click on ‘c:\’ to go to the root.  This has been extrememly handy when I’m knee deep in the folder hierarchy and want to get to my root drive really quick.  I also find it handy on blog aggregator sites like this one or my other favorite http://www.geekswithblogs.net.  If you had this utilitly installed and you were currently looking at my blog, you could click on the http://blogs.msdn.com to go back to the main MSDN blog page (in fact, that’s what made me write this utility).

2. Smart Delete a.k.a. Sharp Shell:  This is both a framework and a utility wrapped in one.  Basically, it’s a framework that you can write plugins for that will create context menu shell extensions to work with files and folders.  The plug in interface is quite simplistic and frees you from having to figure out how to write explorer context menu shell extensions. As a proof of concept, I created a Smart Delete plugin.  How many times have you decided to go into your temp folder and clear it out.  You do a CTRL-A and hit the delete key in hopes of deleting your 2000+ files in there.  It stops at the 53rd file saying that it is in use and cannot be deleted.  So you deselect that file and try again.  This time it stops at the 123rd file with the same message.  Repeat.  Repeat.  Repeat.  etc…  This utility will simply skip those files and continue deleting the remaining ones.  So what you’re left with is only the files that are in use and cannot be deleted.  I still have 1 more thing to add which is a Smart Recycle plugin that basically does the same thing but moves the files to the Recycle Bin instead of permanently deleting them.

Let me know what you would like to see and when I finally get some free time, I’ll fix it up and post it (followed later by the other one).

Comments (15)

  1. I vote for the second one. That would be very useful, and I’m sure people will come up with some plugins, or at least plugin ideas, pretty quick.

  2. Joku says:

    Not sure if this would be use to anyone else, but here goes..

    Suppose you have a directory selected, or perhaps multiple directories. Now if you right click, the menu would offer something like "smart execute" sub menu, which would look what files are in the selected dir(s) and then offer sub context menu inside the "smart execute" -menu which offers functionality depending on the file extension.

    Or perhaps just a simple execute which would pick one file/command to run on the file, depending on pre-defined configuration and ranking (so if your configuration would have DLL and EXE configured, you could place the EXE as 1st, if there was no EXEs, then something you often do with DLLs would be ran)

  3. Mahesh says:

    Of course the Smart Delete, besides you say it is a framework too!!

  4. I think we’re thinking along the same lines. The framework itself will allow plugin writers to choose 3 of the following levels of support:

    – All Files: If any of the targets selected are files (regardless of extension) the plugin menu item will display

    – All Folders: If any of the targets selected are folders, the plugin menu item will display..

    – Specific File Extension: If any of the targets are a specific file extension, the plugin menu item will display.

    You can also logically OR the values (i.e. flags) to support some or all target types.

    The framework basically passes a filtered data structure to the plugin containing the targets that plugin wants. So if the plugin says it only supports folders, then the framework will only pass it the folder in its list of targets. Same for files or extension specific.

    Now as far as sub-menu for the plugins, I haven’t quite gotten to that part. It will more than likely belong in a seperate interface in order to keep the base plugin support easy and allow more advanced plugins to use its own menu. Does that sound like what you’re getting at?

  5. option 1. very cool.

    2 – not as much.

  6. James Bray says:

    Both sound very interesting.

    Will you make the source available?

  7. Paul says:

    Bread Crumb Band sounds cool! But, I like the SmartDelete framework dealie, too. I’ll vote for Bread Crumbs to balance the demand for SmartDelete.

  8. Kris says:

    My vote – SmartDelete Framework!

  9. Drew Marsh says:

    Definitely the latter. 🙂

  10. Lance says:

    Mark, did you ever do anything with the bread crumb band idea?

  11. i’m late to this blog entry. in response to the October 29, 2004 post. yes. i would like to see the plugin add a context menu option and then goto a sub-context menu. would the interface be part of the base project or would it also be a plug-in?


    new to shell programming.