Click here to Skip to main content
15,890,882 members
Articles / Programming Languages / C++
Article

A Cool Way to Navigate Your 'Start' Menu that Integrates with your Desktop

Rate me:
Please Sign up or sign in to vote.
4.90/5 (47 votes)
3 Jan 2007CPOL4 min read 479.1K   2K   108   316
A type ahead style combobox control contained in a desk band that builds lists of shortcuts from your Start menu

NOTE: For the latest news and updates, consider checking the official SmartStartMenu Web site.

smartstartmenu.jpg

Introduction

SmartStartMenu for Windows essentially gives you a way to turn the process of running almost any program into a two or three key-stroke effort. Maybe you are wondering why one would want to do that when you can just make a desktop shortcut or a 'Quick Launch' toolbar item and I'll tell you. SmartStartMenu lets you run almost *any* program that is on your 'Start' menu in just a few key-strokes... not just the ones you use the most. It shows you a matched list based on the criteria you have typed to help guide you in real time. Since it is based on your 'Start' menu, you can configure it through your 'Start' menu and reduce clutter on your desktop and your 'Quick Launch' toolbar. I like to use my desktop like a real desktop... I keep what I need for my current tasks at hand. I don't want my desktop all cluttered with shortcuts to programs. With a little tweaking of your 'Start' menu, you can configure any program that you want to be run by any three or four letter key-stroke that you want. As you type into SmartStartMenu, a type ahead style list is generated on the fly from your 'Start' menu. Select the desired item (or just press the 'Enter' key if the item is already selected) and the program is started just like you had selected the 'Start' menu item directly. It is actually VERY simple. You can also type a path to open Explorer, a Web site to open your browser, or a system command such as 'cmd' or 'mspaint'.

Demo Project

The demo project download is a quick way to take a look at the source code if you are interested. Suggestions and comments are appreciated. One thing that you may find interesting is the code used to decode and interpret the data in the HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist key of the registry. There are also some simple uses of the STL map and string classes, a simple 'desk band' Framework gleamed from Microsoft examples, sub-classes of both the MFC CComboBoxEx and CEdit classes that do some special key stroke processing to enable the type-ahead functionality, ROT13 decoding snippet used to decrypt the 'User Assist' data in the registry, and a performance oriented flavor of 'shortcut resolving' code that was helped along by the previous efforts of Igor Vigdorchik and his 'How to Create and Resolve a Shortcut' article.

Latest Release

If you just want to grab the latest release and start using the tool, click here. The download is a self-extracting setup. Just download and run it.

The code is pretty solid (and getting better all the time), but here is a list of known issues and future enhancements under consideration.

  • Issues
    • You must restart Windows after Upgrades.
  • Suggestions
    • Put icons in the dropdown list and edit control.
    • Hook into 'Desktop' search tools to find programs by name and add them to the list too.
    • Do a tray icon and pop-up the control when clicked.
    • Ability to omit shortcuts based on the file type of the target.
    • Support for 64-bit XP.
    • Impersonate user... "run as".
    • Command line merging and/or overriding.

Your comments are very important to me... do not hesitate to post suggestions and issues in the comments section below.

Using SmartStartMenu

When setup has completed successfully, you must RIGHT-BUTTON click within the clock area of your taskbar, select the 'Toolbars' sub-menu and then select the SmartStartMenu menu item.

If your taskbar is 'unlocked', you can resize the SmartStartMenu toolbar to display more information. You can also drag the toolbar to the top of the screen to get the maximum display area available.

For more information, get the help file by clicking here.

Upgrading and Uninstalling

When upgrading, it is necessary to restart Windows for the changes to take effect.

When uninstalling, it is advised that you hide the SmartStartMenu. If you fail to do so, the toolbar will continue to be available until the shell is restarted. While in this state, using the taskbar's 'toolbar' menu will cause an empty menu item to be displayed on the menu until you either select the menu item or restart Windows.

History

You can view the revision history here.

Credits

Finally

If I left out any details you think should be mentioned in the article, please let me know.

If you could take one last second to rate this article or even leave a comment, it would be much appreciated.

Thanks for reading!

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Web Developer
United States United States
16yrs of GUI programming experience gained at: (most recent first) BlackBall, Veritas, Seagate Software, Arcada, Stac, Mountain, and Emerald Systems.

Languages/Scripting: C, C++, JAVA, BASIC, JAVASCRIPT, HTML, XML, PHP, and SQL

Tools: MS Visual Studio, MS Visual SourceSafe, CVS, PVCS, Bounds Checker, VMWare, ToDoList, InstallShield, and Office Applications

Libraries and API: RTL, STL, WIN32, MFC, ATL, .NET, ActiveX, DirectX, COM, DCOM, Shell Extensions, and Shell Namespaces

Strengths: Honest, communicative, keen eye for usability, good at estimating workload and completion dates, ready to take on grunt work, team player, experienced working with QA, localization, Tech Pubs, Sales, and Marketing teams.

Comments and Discussions

 
GeneralRe: Doesn't work Pin
Shaun Harrington8-Nov-06 8:38
Shaun Harrington8-Nov-06 8:38 
QuestionHow to resize windows toolbar!!! Pin
neoandrew16-Oct-06 3:44
neoandrew16-Oct-06 3:44 
AnswerRe: How to resize windows toolbar!!! Pin
Shaun Harrington16-Oct-06 10:48
Shaun Harrington16-Oct-06 10:48 
GeneralRe: How to resize windows toolbar!!! Pin
neoandrew17-Oct-06 1:53
neoandrew17-Oct-06 1:53 
GeneralRe: How to resize windows toolbar!!! Pin
Shaun Harrington17-Oct-06 4:16
Shaun Harrington17-Oct-06 4:16 
GeneralRe: How to resize windows toolbar!!! Pin
neoandrew19-Oct-06 4:31
neoandrew19-Oct-06 4:31 
GeneralRe: How to resize windows toolbar!!! Pin
Shaun Harrington20-Oct-06 2:09
Shaun Harrington20-Oct-06 2:09 
GeneralFeature requets Pin
QuintiQ10-Oct-06 12:47
QuintiQ10-Oct-06 12:47 
First of all I want to complement you on the great tool you created.

Like allways there's still room for improvements, like:
- Don't use a dropdownbox, use a listSelectBox underneed the textbox. Then add/remove items on every keystroke isntead of repopulating. This should avoid the iratic closing/opening of the list and not being able to see what you've been typing. You should then redirect the enter, arrow down and arrow up to the listSelectBox.

- Completing partialy typed folder names with tab.

- Add "Word starting with" filter feature. So when i type "word" i find "Wordpad" and "Microsoft Word" but not "crossword" or "password".

- Default select MFU application, the info can be found in the registry under "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{75048700-EF1F-11D0-9888-006097DEACF9}\Count", the data is encrypted. You should be able to decrypt it by porting the following script:
<br />
StringMod(_string, _chars="")     ;made by PhiLho, adapted by Kostic Dejan<br />
 { <br />
   Loop Parse, _string <br />
   { <br />
         char := Asc(A_LoopField) <br />
         o := Asc("A") * (Asc("A") <= char && char <= Asc("Z")) + Asc("a") * (Asc("a") <= char && char <= Asc("z")) <br />
         If (o > 0) <br />
         { <br />
            char := Mod(char - o + _chars, 26) <br />
            char := Chr(char + o) <br />
         } <br />
         Else <br />
         { <br />
            char := A_LoopField <br />
         } <br />
         rStr := rStr char <br />
      } <br />
   Return rStr <br />
}<br />


- A very minor improvement would be the use of Windows color settings and pics or user defined colors and pics so the toolbar will fit in with non standard skins.


I hope you find some ideas usefull and implement them.

Please dont mind my spelling/grammar Blush | :O
GeneralRe: Feature requets Pin
Shaun Harrington11-Oct-06 3:07
Shaun Harrington11-Oct-06 3:07 
GeneralRe: Feature requets Pin
QuintiQ11-Oct-06 12:51
QuintiQ11-Oct-06 12:51 
GeneralRe: Feature requets Pin
Shaun Harrington11-Oct-06 14:02
Shaun Harrington11-Oct-06 14:02 
GeneralRe: Feature requets Pin
Shaun Harrington17-Oct-06 9:06
Shaun Harrington17-Oct-06 9:06 
GeneralRe: Feature requets Pin
QuintiQ17-Oct-06 9:40
QuintiQ17-Oct-06 9:40 
GeneralRe: Feature requets Pin
Shaun Harrington17-Oct-06 9:07
Shaun Harrington17-Oct-06 9:07 
GeneralRe: Feature requets Pin
Shaun Harrington17-Oct-06 17:09
Shaun Harrington17-Oct-06 17:09 
GeneralRe: Feature requets Pin
QuintiQ17-Oct-06 22:06
QuintiQ17-Oct-06 22:06 
GeneralRe: Feature requets Pin
Shaun Harrington18-Oct-06 4:21
Shaun Harrington18-Oct-06 4:21 
GeneralRe: Feature requets Pin
Shaun Harrington18-Oct-06 4:29
Shaun Harrington18-Oct-06 4:29 
GeneralRe: Feature requets Pin
Shaun Harrington18-Oct-06 4:44
Shaun Harrington18-Oct-06 4:44 
GeneralRe: Feature requets Pin
QuintiQ18-Oct-06 5:45
QuintiQ18-Oct-06 5:45 
GeneralRe: Feature requets Pin
Shaun Harrington18-Oct-06 7:02
Shaun Harrington18-Oct-06 7:02 
GeneralProblem with CreateWindowEx Pin
kodeguru29-Sep-06 7:26
kodeguru29-Sep-06 7:26 
GeneralRe: Problem with CreateWindowEx Pin
Shaun Harrington29-Sep-06 9:39
Shaun Harrington29-Sep-06 9:39 
GeneralRe: Problem with CreateWindowEx Pin
Shaun Harrington10-Oct-06 1:02
Shaun Harrington10-Oct-06 1:02 
GeneralRe: Problem with CreateWindowEx Pin
kodeguru10-Oct-06 13:36
kodeguru10-Oct-06 13:36 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.