用C++ Builder创建上下文菜单扩展处理器

当用户右击一个shell对象时,shell会显示它的上下文菜单。文件系统对象有大量的标准菜单项,如"剪切"和"拷贝",这些都是缺省的菜单项。如果对象是一个文件,是文件类的成员,就能够在注册表里指定附加的菜单项。Shell检查注册表,看看文件类型是否与一些上下文菜单handler相关联,如果是,shell会咨询这些handler是否添加额外的菜单项。

上下文菜单handler是一种shell扩展handler,它添加命令到已有的上下文菜单中。上下文菜单handler都与特定的文件类相关联,并且在显示这类文件的成员的上下文菜单时调用。通过实现和注册这样一个handler,能够动态地添加菜单项到对象的上下文菜单上,从而为特殊的对象定制菜单。

上下文菜单Handler的工作原理

作为一种shell扩展handler,上下文菜单handler同所有其它handler一样, 是进程内COM 对象,即对象作为动态连接库 (DLL)实现。除了IUnknown接口外,上下文菜单还必须导出IShellExtInit和IContextMenu接口,作为选择,上下文菜单也能导出IContextMenu2和IContextMenu3,这些接口可以实现自画菜单项。

IShellExtInit接口仅仅被shell用来初始化handler,主要的操作通过handler的IContextMenu接口进行。Shell首先调用IContextMenu::QueryContextMenu,传送一个HMENU句柄,这个方法用它来增加上下文菜单。如果用户亮选了这些新添加的某个命令项, IContextMenu::GetCommandString将被调用,以取得这条菜单的帮助信息,把它显示在资源管理器的状态条上。如果用户单击了handler的条目,shell调用IContextMenu::InvokeCommand,从而handler能够执行合适的操作。

实现IContextMenu接口

1、实现QueryContextMenu方法

时间: 2024-08-04 11:00:30

用C++ Builder创建上下文菜单扩展处理器的相关文章

【转】Windows Shell扩展编程傻瓜手册大全:上下文菜单扩展

引用自:http://blog.163.com/yesaidu@126/blog/static/51819307200861853827582/ Part I: A step-by-step tutorial on writing shell extensions 第一节:Windows shell扩展初步:上下文菜单扩展   作者:Michael Dunn 译者:yesaidu   源代码下载:1       2   目录 ● README ● 系列绪言 ● 第一部分绪言 ● 从AppWiza

fragment创建菜单-fragment创建上下文菜单

问题描述 fragment创建上下文菜单 text = (textView) v.findViewById(R.id.text); this.registerForContextMenu(text); @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { menu.add(Menu.NONE, 1, Menu.NONE, "编辑"): menu.ad

Android编程实现为ListView创建上下文菜单(ContextMenu)的方法

本文实例讲述了Android编程实现为ListView创建上下文菜单(ContextMenu)的方法.分享给大家供大家参考,具体如下: ContextMenu称为上下文菜单,一般在控件上长按时弹出.今天我们学习ContextMenu的用法,这里与listview相结合,先在ListView显示几个Item,然后在Item上长按,弹出一个菜单(就是ContextMenu),点击菜单上的项目,提示刚才长按的Item的Position. main.xml文件 <?xml version="1.0

用XML数据岛创建上下文菜单

xml|菜单|创建|数据   上下文菜单就是用户在页面上单击右键时所显示的一组命令.微软的MSDN有一个简单的例子说明了怎样建立自定义菜单.这里,我们将通过XML的数据岛来快速创建自定义的上下文菜单.XML数据岛就是存在于HTML文档中的XML数据的一部分.通过XML文档对象模型[XML document object model (DOM)],我们可以轻松地参考和引用XML里的内容.我们这里利用XML数据岛来存储上下文菜单的多个定义,其中的每一个定义都可以和文档中的任一元素相联系.在没有定义的

为金山虚拟光驱扩展浏览器上下文菜单功能

一.简介 虚拟光驱,对我们大家来说,都不会太陌生.因为种种原因,如,有些游戏,需要在光驱才能运行,我们为了保护光驱,或者为了加快游戏读取光盘的速度,或者因为有些电脑本来就没有安装光驱(网吧,学校的电脑往往就是这样的).我们可以通过虚拟光驱来在达到我们的目的.金山虚拟光驱是应用的比较广泛的一种虚拟光驱软件.它安装操作简单,用来制作虚拟光盘也很方便. 但在使用它的过程中,我发现每次为了将虚拟光盘插入光驱中或者从虚拟光驱中弹出光盘,我们需要先运行金山虚拟光驱管理工具才能进行.虽然并不是很复杂,但是每次

Windows窗体之创建动态上下文菜单

若要节省创建应用程序所需的时间并减少代码量,可以让多个控件共享单个上下文菜单对象.利用一个只包含该控件必需菜单项的"动态"上下文菜单(或快捷方式菜单),可以减少应用程序中控件所需的上下文菜单总数.以下演练显示如何更改每个控件的菜单项. 创建应用程序 以下步骤将创建一个 Windows 应用程序,它具有包含两个控件的窗体.在运行时,如果右击每个控件(只要它具有焦点,即被选定),将显示相应的上下文菜单.RadioButton 控件的上下文菜单将包含两个项:CheckBox 控件的上下文菜单

Shell扩展:定制上下文菜单

如若需要获取某个选定文件的完整路径,小弟经常机械性地先复制Shell窗口 中的路径,紧接着复制文件名并拼在路径之后.有时候复制文件路径是为了程序使 用,这就必须将路径中的所有"\"换成"\\",总之一切都是 很无聊的操作.还好我是个程序员,完全可以定制一些程序来方便自己.在此分享 给大家. 程序实现的功能很明确:在Shell的上下文菜单中加入一菜单项目"获取 文件路径并保存到剪贴板",点击此项可以将选中的一个或多个文件的完整 路径保存到剪贴板中.

与众不同 windows phone (16) - Media(媒体)之编辑图片, 保存图片到相册, 与图片的上下文菜单“应用程序...”和“共享...”关联, 与 Windows Phone 的图片中心集成

原文:与众不同 windows phone (16) - Media(媒体)之编辑图片, 保存图片到相册, 与图片的上下文菜单"应用程序..."和"共享..."关联, 与 Windows Phone 的图片中心集成 [索引页][源码下载] 与众不同 windows phone (16) - Media(媒体)之编辑图片, 保存图片到相册, 与图片的上下文菜单"应用程序..."和"共享..."关联, 与 Windows Phon

Win32开发入门(6):创建右键菜单

快捷菜单,说得容易理解一点,就是右键菜单,当我们在某个区域内单击鼠标右键,会弹出一些菜 单项.这种类型的菜单,是随处可见的,我们在桌面上右击一下,也会弹出一个菜单. 右键菜 单的好处就是方便,它经常和我们正在操作的某个UI元素联系起来,比如我们正在使用文本框输入文本 ,我们在文本框中右击,就会看到可能有[复制][清空][全选]之类的选项,所以,右键菜单也称 为"上下文菜单(Context Menu)". 一般来说,创建并使用快捷菜单,可以按照以下步骤进 行: 1.用资源编辑器创建菜单.