<

Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x

Add a Custom Command Button to the Windows 7 Explorer Toolbar

Published on
31,544 Points
21,044 Views
10 Endorsements
Last Modified:
Awarded
This article describes how to add a user-defined command button to the Windows 7 Explorer toolbar.  In the previous article, we saw how to put the Delete button back there where it belongs.  "Delete" is a predefined action, but today, we're going to add a button that you can program to do whatever you want.
Custom button "MyTool" added to the Win7 toolbarMicrosoft intentionally left out the familiar "Customize..." option for the Explorer toolbar.  They provided a bunch of pre-set toolbars that depend upon the types of files that are in the folder that is being displayed.  In any case, they do not (yet) document how to tweak the registry to modify those preset layouts.  However, there are enough examples in the existing registry entries to make it possible to do some nifty tweaks without resorting to low-level system programming.

As before, we'll be working with the subkey(s) under the registry key:

    HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderTypes

In there, you'll find a bunch of GUID items that associate with various types of folders.  See part one for more details.  We'll again be working with the item that represents "Generic" folder data.  This basically means all folders that are not "optimized" as being a "Photo" folder or a "Document" folder or any of the special Shell Namespace folders; that is, it appears above folders that are set to display "General Items."

[step="" title=""]Notice: There are certain dangers in using RegEdit to modify the system registry.  Be very careful.
I recommend that you make a backup of your registry before experimenting (I certainly did).[/step]

Add a Custom Command Button to the Explorer Toolbar

Follow steps 1-5 from part one of this series.  In brief:

Start RegEdit and drill down to:

    HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderTypes\
    {5c4f28b5-f869-4e84-8e60-f11db97c5cc7}

Set the permissions:  Change the Owner to "Administrators" and set Administrators to have "Full Control" over that registry key.

Add keys, TasksItemsSelected\1 to get to this point:
RegEdit, after adding the "1" subkey[step="" title="Note:"]We added the 0 subkey in part one of this article.  
If you did not follow along there, then your subkey should be 0 (not 1).[/step]

Next, we add as a subkey, a brand-new GUID that will identify the MyTool button and command.  You must use a valid GUID, but any unique GUID-format value will do.  I used uuidGen.Exe that comes with Visual Studios to create a GUID, then I tweaked the value a little for fun.  In short, I added the subkey:

    {BEEFF00D-F51D-11DE-A821-413C56D89593}

The data elements in that new key are:

  InfoTip    REG_SZ Infotip for MyTool
  Title        REG_SZ MyTool

There are other values you can add, but this is all we need for the purposes of adding a text-only button to the Explorer toolbar.  The Title value is the text that will be displayed on the Explorer toolbar.

Below the {BEEFF00D... key, we need to add, in steps,
   shell
       InvokeTask
          command
And for the final one, change the (Default) value to specify the command to execute.  

  (Default) REG_SZ cmd.exe "/c c:\ProgramData\MyScripts\MyTool.bat %*"

Here are the RegEdit screens after entering the data:
RegEdit, after making all of the changesAnd here's the RegEdit reference script.  Important: The script assumes that we are adding tool# 1, and that tool# 0 is already in place (Explorer won't recognize out-of-sequence tool numbers).  AND the permissions must be set before running this script.
[step="" title="PutMyToolOnToolbar.REG"]
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderTypes\{5c4f28b5-f869-4e84-8e60-f11db97c5cc7}\TasksItemsSelected]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderTypes\{5c4f28b5-f869-4e84-8e60-f11db97c5cc7}\TasksItemsSelected\1]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderTypes\{5c4f28b5-f869-4e84-8e60-f11db97c5cc7}\TasksItemsSelected\1\{BEEFF00D-F51D-11DE-A821-413C56D89593}]
@=""
"InfoTip"="InfoTip for MyTool"
"Title"="MyTool"


[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderTypes\{5c4f28b5-f869-4e84-8e60-f11db97c5cc7}\TasksItemsSelected\1\{BEEFF00D-F51D-11DE-A821-413C56D89593}\shell\InvokeTask\command]
@="cmd.exe \"/c c:\\ProgramData\\MyScripts\\MyTool.bat %*\""

Open in new window

[/step]The final line sets a command that will be executed.  It can be any program name, such as Notepad.Exe or calc.exe, but in this example, I set it to execute a batch file:

[step="" title="C:\ProgramData\MyScripts\MyTool.BAT"]
@REM -- Used in the "My Tool" custom Explore Tool bar button
@ECHO MyTool program name: %0
@ECHO Active folder when clicked: %1
@ECHO first file: %2
@ECHO second file: %3
@ECHO third file: %4
@PAUSE 

Open in new window

[/step]We have set the options in the registry so that this tool will be available only when there is one or more items selected in the Explorer window (we used the TasksItemsSelected key).  When the tool runs, it will receive at least two parameter values.

  %1 -- The path of the folder that was being displayed
  %2 -- The pathname of the file that was selected.

If you select more than one file before clicking the MyTool button, then the subsequent filenames will be in subsequent parameters.

I have used a simple DOS batch file for illustration, but you'll certainly want to write your own fancy program.  If you use a script file (such as a .JS or .VBS script) then you need to specify the program that runs scripts:  WSCRIPT.EXE.  For instance, setting the command (Default) value to:

   wscript.exe "c:\ProgramData\MyScripts\MyTool.js" %*

...would execute a JScript program.  In it, you can cycle through the parameters with code like:

[step="" title="C:\ProgramData\Myscripts\MyTool.JS"]
// Example JScript file for an Explorer toolbar custom tool.
// Argument 0 is the folder that was active.
// Arguments 1 - n are full pathnames of selected files
// 
var oArgs= WScript.Arguments;

//--------- cycle through the filenames in the dropped selection

for (var j= 0; j < oArgs.Count(); j++ ) {
    var sSrcFile= oArgs( j );
    WScript.Echo( j + ": "+sSrcFile ); 
}

Open in new window

[/step]

Summary
Although Microsoft seems to discourage user-customization of the Win7 Explorer toolbar, it is possible to add buttons -- for both predefined and custom commands -- to that toolbar.  

In these articles, we saw how to set the permissions to allow modifications of protected registry settings with RegEdit.  And we saw what registry keys to add in order to add new toolbar button and make it perform any user-programmed command.  We also looked at how to handle the command-line parameters that will be provided to the custom tool when it executes.

There is much more to to learn about this facet of Windows 7 programming.  For instance, I'd like to add a new drop-down menu (instead of just a single button) and I'd like to burn that "Burn" command right off the toolbar.  But we'll have to leave that for a future article.  I hope you have enjoyed this and perhaps learned a thing or two.  Thanks for tuning in!

See Also:
 
  Add a Delete Button to the Windows 7 Explorer Toolbar

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
If you liked this article and want to see more from this author, please click the Yes button near the:
      Was this article helpful?
label that is just below and to the right of this text.   Thanks!
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
10
Comment
Author:DanRollins
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
7 Comments
 

Expert Comment

by:cmcqueen
Excellent article. I'm looking forward to your article on 'burning that "Burn" command'. I've hated that command with a passion since Vista first came out. They removed the "Delete" button and put a "Burn" button and on every folder yet!
Once again thanks for the great article.
0
 
LVL 34

Expert Comment

by:sramesh2k
You rock, Dan. Was a great article!
0
 
LVL 49

Author Comment

by:DanRollins
Thanks!  I'm glad you liked it.  Feel free to click [yes] on any of my articles :-)
here's a list: http://w.e-e.com/bCVjPK
0
Free learning courses: Active Directory Deep Dive

Get a firm grasp on your IT environment when you learn Active Directory best practices with Veeam! Watch all, or choose any amount, of this three-part webinar series to improve your skills. From the basics to virtualization and backup, we got you covered.

 

Expert Comment

by:Nathan323
Hey, yeh that was great! I am trying to use this new button to shortcut to Context>New>Text Document command, so it creates a new text document unopened ready to be titled, just like the New Folder button. Any ideas how this should be done? Apologies if this is not the place for questions, I'll post to forum as well :)

Thanks, Nathan
0
 

Expert Comment

by:Nathan323
oh there is no forum. :p
0
 
LVL 60

Expert Comment

by:Kevin Cross
Windows Programming Forum (Question and Answer Topic Area)
http://www.experts-exchange.com/Programming/System/Windows__Programming/
0
 
LVL 49

Author Comment

by:DanRollins
I got an email regarding this article from a person who neglected to provide his EE member name...  It suggested that a valuable custom tool would be one that might be called "Add Folder"  

The current mechanism involves: right-click / New... / Folder / type something to rename from "New Folder"  (that is, a multiple-step operation).  The custom tool would pop up a box to input the folder name and it could set folder attributes and even open a new Explorer window on the folder for immediate use.

It's a good idea.  If you have other ideas for useful custom tools, feel free to post them here.

-- Dan
0

Featured Post

Enroll in September's Course of the Month

This month’s featured course covers 16 hours of training in installation, management, and deployment of VMware vSphere virtualization environments. It's free for Premium Members, Team Accounts, and Qualified Experts!

Join & Write a Comment

Suggested Articles

This is Part 3 in a 3-part series on Experts Exchange to discuss error handling in VBA code written for Excel. Part 1 of this series discussed basic error handling code using VBA. http://www.experts-exchange.com/videos/1478/Excel-Error-Handlin…
Have you created a query with information for a calendar? ... and then, abra-cadabra, the calendar is done?! I am going to show you how to make that happen. Visualize your data!  ... really see it To use the code to create a calendar from a q…

Keep in touch with Experts Exchange

Tech news and trends delivered to your inbox every month