Windows 2000 UI 新特点之三:搜索管理器

2016-01-29 11:50 0 1 收藏

Windows 2000 UI 新特点之三:搜索管理器,Windows 2000 UI 新特点之三:搜索管理器

【 tulaoshi.com - C语言心得技巧 】

Windows 2000 UI 新特点之三:搜索管理器

原文参见:MSDN Magazine March 2000


编译/赵湘宁

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com)

第一部分 Windows 2000 UI 新特点之一:信息条提示(Infotip)
第二部分 Windows 2000 UI 新特点之二:自定义文件夹栏目

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com) 本文源代码


摘要:本文是关于Windows 2000 UI 新特点系列文章的第三篇,将创建一个简单的对象搜索管理器扩展(Search Handler)。
    搜索处理是与外壳的用户接口集成在一起的一个模块,允许您查找对象,如:文件、打印机、网络计算机和消息等。从"开始"菜单进入"搜索"子菜单(在以前的Windows版本中,这个菜单叫做"Find"或“查找”,现在为"Search"或“搜索”),可以进入对象的搜索处理。在Windows 2000 之前,资源浏览器的"工具"菜单中包含着一个相同的子菜单副本,对这种功能提供了一种可选择的访问方式。
   到了Windows 2000,资源浏览器通过一个联合对象实现其自己搜索面板。想要添加自己的搜索面板,必须自己编写一个新的联合对象。关于联合对象描述将在另外的文章中专门来讨论,这里只是提出这个概念和方法。新的搜索面板完全基于DHTML,并且完全代替了Windows 2000 以前的"查找(Find)"对话框。您可以使用与在Windows 9x 或 Windows NT下相同的方法和代码来运行它:
        ShellExecute(NULL, "find", NULL, NULL, NULL, 0);  
    上面的代码只是运行“搜索”功能,要想在"搜索"菜单中增加一个新的菜单项,那完全是另外一回事,“搜索”菜单读取注册表下列路径入口:
HKLM  SOFTWARE    Microsoft      Windows        CurrentVersion          Explorer            FindExtensions
    有两种类型的菜单项:静态和动态。静态菜单项只有在需要时被加载,而动态扩展被绑定到外壳的生命周期中,它在外壳启动时被加载,在外壳进程结束时被终止。一般情况下,只需要写一个静态扩展。动态扩展必须要在上面所述的节点处注册。静态扩展必须在一个叫做"Static"的公共键下被分组,被放在"FindExtensions"下。
什么是搜索处理器呢?它是一个非常简单的上下文菜单外壳扩展类型。为了编写一个搜索处理器,只要写一个上下文菜单外壳扩展的框架即可。也就是说,您必须实现IContextMenu 和IShellExtInit。ICcontextMenu 暴露三个函数:第一个是QueryContextMenu,用于增加一个或更多的菜单项;第二个是GetCommandString,为用于提供描述;第三个是InvokeCommand,负责执行代码响应用户的点击。对一个搜索处理器而言,只需要InvokeCommand,其它两个函数可以忽略。

图九 使用 Find Process 搜索管理器

    图九是一个"Find Process"搜索处理器的运行时例子。Windows 2000也支持ToolHelp API来获得关于运行进程和模块的系统信息。Windows 9x支持ToolHelp,但Windows NT 4.0不支持ToolHelp(Windows NT 4.0中使用另外一个API:PSAPI)。详细信息请参考本文源代码。

来源:https://www.tulaoshi.com/n/20160129/1483580.html

延伸阅读
Windows系统任务管理器,大家应该都不陌生了。估计更多的朋友是当执行程序时遇到卡死而不得不通过 Ctrl+Alt+Delete 启动任务管理器去结束程序,另外就是通过任务管理器来查看当前系统的资源占用情况,比如CPU、内存等的资源占用。在Windows 8系统里,任务管理器也有了很大的变化,相比较Win7而言,更加人性化和智能,并且在界面操作和功能设置...
标签: ASP
  附录:数据结构及测试数据 数据库说明 ID:节点ID NodeName:节点名称     BrotherNode:兄弟节点,当前节点的下一个兄弟节点的ID SonNode:子节点,当前节点的第一个子节点的ID 测试数据 ID        NodeName        ParentNod...
MySQL从5.0.2版开始引入触发器,触发器就是一个已命名的数据库对象,这个对象和某张表 相关,而且当这张表发生某种特定事件后,触发器将被激活执行相应的动作,触发器允许这 些动作在这张表中的一行或多行的数据被操作的前后执行。在流行业务系统的处理过程中,开发和管理人员可以用触发器来实现数据审计和其他安全相关的功能,如在运行中...
标签: 电脑入门
注册表、任务管理器打不开或是硬盘占用无故变大,用杀软杀出木马若干后,只有任务管理器还是打不开,现象不是那种弹出管理器的外观马上就消失,而是鼠标只轻轻地闪一下就没任何反应了,具体症状如下: 用regedit或Gpedit.msc设定任务管理器的方法无效,拷贝新的taskmgr.exe到system32.dllcache同样无效,安全模式下也同样老样子,Windows 7光...
Windows2000/XP内含的任务管理器(Taskmgr)相信大家都熟悉吧,相比之下XP里的要比2000功能更加强大,返回的信息也更加的详细,不过您是否觉得还有很多希望获得的消息没有包含在里面吗?您是否觉得Windows的系统管理工具箱里的东西太分散了吗?下面就让我们看看它们的开发原理,并动手实现一个真正的任务管理器。现在我们是调用Win32API来实...

经验教程

48

收藏

14
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部