65.9K
CodeProject 正在变化。 阅读更多。
Home

直接浏览 Microsoft 知识库文章的实用程序

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.56/5 (3投票s)

2001年2月23日

viewsIcon

91230

downloadIcon

730

一个允许您直接从“运行”对话框浏览 MS 知识库文章的实用程序。

引言

如果你曾经需要通过编号查找知识库文章,你就会知道这个过程有点繁琐。首先浏览到 msdn.microsoft.com,在微小的搜索编辑框中输入文章编号,等待搜索结果返回,然后最终点击链接到该文章。除非现在有了这个工具,否则没有快速跳转到文章的方法!

KBLaunch 是一个 Shell 扩展,它扩展了“运行”对话框。只需输入 ?q,然后输入文章编号,如图所示

 [Example Run dialog - 6K]

当你按下 Enter 键时,KBLaunch 会运行你的默认浏览器,并将其指向文章的网页。

工作原理

KBLaunch 将自身注册为 Shell 执行钩子。Shell 执行钩子在两种情况下被调用

  1. 每当使用 ShellExecute()ShellExecuteEx() 运行程序时。这包括在资源管理器中双击文件。
  2. 每当用户在“运行”对话框中输入内容时。

钩住“运行”对话框的有趣之处在于,我们可以让用户输入不是程序名称的内容,而是指示我们的扩展执行某些操作的内容。Internet Explorer 是一个很好的例子 - 如果你输入 URL(以 httpftpwww 或其他常用前缀开头),IE 提供的 Shell 执行钩子会解释该 URL 并启动浏览器。

KBLaunch 查找前缀 ?q,然后读取命令行中的其余部分。如果它是一个正数,KBLaunch 将构造文章的 URL,并使用 ShellExecute() 运行你的默认浏览器,并将该 URL 传递给它。请注意,这利用了 IE 自己的 Shell 执行钩子(如上所述)来启动 Web 浏览器,因此你需要安装 IE 3 或更高版本。

Shell 执行钩子扩展几乎是微不足道的 - 只有一个接口需要实现,并且该接口只有一个方法。该方法是 IShellExecuteHook::Execute(),它接收一个指向 SHELLEXECUTEINFO 结构的指针,该结构包含有关正在运行的程序的大量信息。Execute() 处理解析命令行和运行浏览器,如上所述。此代码位于示例项目中的 KBLaunchShlExt.cpp 文件中。

© . All rights reserved.