Click here to Skip to main content
Licence 
First Posted 22 Feb 2001
Views 69,546
Bookmarked 27 times

A Utility for Browsing Directly to a Microsoft Knowledge Base Article

By | 3 Apr 2001 | Article
A utility that lets you browse to a MS Knowledge Base article right from the Run dialog

Introduction

If you've ever had to look up a Knowledge Base article using its number, you know that the process it a bit tedious. First browse to msdn.microsoft.com, enter the article number in the tiny search edit box, wait for the search results to come back, and then finally click the link to the article. There isn't a quick way to jump right to an article, until now!

KBLaunch is a shell extension that extends the Run dialog. Simply enter ?q followed by the article number, as pictured here:

 [Example Run dialog - 6K]

When you hit Enter, KBLaunch runs your default browser and points it right at the web page for the article.

How It Works

KBLaunch registers itself as a shell execute hook. Shell execute hooks are called in two cases:

  1. Whenever a program is run with ShellExecute() or ShellExecuteEx(). This includes double-clicking on a file in Explorer.
  2. Whenever the user enters something in the Run dialog.

What's interesting about hooking the Run dialog is that we can let the user enter something that isn't a program name, but which instructs our extension to do something. Internet Explorer is a good example of this - if you enter a URL (starting with http, ftp, www, or other common prefixes), the shell execute hook provided by IE interprets that and launches the browser.

KBLaunch looks for the prefix ?q, and then reads the rest of the command line. If it is a positive number, KBLaunch constructs the URL for the article and runs your default browser with ShellExecute(), passing it that URL. Note that this makes use of IE's own shell execute hook (described above) to launch the web browser, so you'll need IE 3 or later installed.

A shell execute hook extension is almost trivial - there's only one interface to implement, and that interface only has one method. The method is IShellExecuteHook::Execute(), and it receives a pointer to a SHELLEXECUTEINFO struct which holds a bunch of info about the program being run. Execute() handles parsing the command line and running the browser, as described above. The code for this is in the KBLaunchShlExt.cpp file in the sample project.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

Michael Dunn

Software Developer (Senior)
VMware
United States United States

Member

Michael lives in sunny Mountain View, California. He started programming with an Apple //e in 4th grade, graduated from UCLA with a math degree in 1994, and immediately landed a job as a QA engineer at Symantec, working on the Norton AntiVirus team. He pretty much taught himself Windows and MFC programming, and in 1999 he designed and coded a new interface for Norton AntiVirus 2000.
Mike has been a a developer at Napster and at his own lil' startup, Zabersoft, a development company he co-founded with offices in Los Angeles and Odense, Denmark. Mike is now a senior engineer at VMware.

He also enjoys his hobbies of playing pinball, bike riding, photography, and Domion on Friday nights (current favorite combo: Village + double Pirate Ship). He would get his own snooker table too if they weren't so darn big! He is also sad that he's forgotten the languages he's studied: French, Mandarin Chinese, and Japanese.
 
Mike was a VC MVP from 2005 to 2009.

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
GeneralVisual C++ .NET compile error Pinmemberribico6:01 24 Mar '06  
GeneralRe: Visual C++ .NET compile error PinsitebuilderMichael Dunn7:07 24 Mar '06  
Generaldoes not work Pinmemberakulkarni6:20 17 Aug '04  
GeneralRe: does not work PinsitebuilderMichael Dunn6:27 17 Aug '04  
Generaldownload manger PinmemberAlexander M.8:13 27 Oct '03  
GeneralRe: download manger PinsitebuilderMichael Dunn11:15 30 Mar '04  
QuestionHow to debug? PinmemberAnonymous13:16 5 Mar '02  
AnswerRe: How to debug? Pinmemberpeterchen5:10 19 Sep '02  
GeneralKnowledge Base Tracking PinmemberNick Parker6:41 1 Mar '02  
GeneralEffort vs Result PinmemberFotis Xomeritakis20:23 29 Mar '01  
GeneralRe: Effort vs Result PinmemberMichael Dunn20:33 29 Mar '01  
GeneralGreat idea...But, can we figure out how a command was launched. Pinmemberbrandonl_webguy4:44 26 Feb '01  
GeneralRe: Great idea...But, can we figure out how a command was launched. PinmemberMichael Dunn13:35 27 Feb '01  
GeneralRe: Great idea...But, can we figure out how a command was launched. Pinmemberbrandonl_webguy4:19 1 Mar '01  

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

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

Permalink | Advertise | Privacy | Mobile
Web01 | 2.5.120517.1 | Last Updated 4 Apr 2001
Article Copyright 2001 by Michael Dunn
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid