右键菜单用法

 1.构成右键菜单的注册表项一览:

右键菜单中的项目用于不同的对象——文件、文件夹、驱动器和 Namespace 对象,对应的,不同操作对象的右键菜单在注册表中的位置也不同。

1.1 应用于文件夹的右键菜单项位于注册表中如下位置:

[HKEY_CLASSES_ROOT/Folder/Shell/]

[HKEY_CLASSES_ROOT/Directory/Shell/]

[HKEY_CLASSES_ROOT/AllFilesystemObjects/shell/]

[HKEY_CLASSES_ROOT/Folder/ShellEx/ContextMenuHandlers/]

[HKEY_CLASSES_ROOT/Directory/ShellEx/ContextMenuHandlers/]

[HKEY_CLASSES_ROOT/AllFilesystemObjects/shellex/ContextMenuHandlers/]

特别的,根据不同的文件夹类型,还有更进一步的右键菜单项:

1.1.1 对于音乐文件夹,右键菜单将从以下位置加载项:

[HKEY_CLASSES_ROOT/SystemFileAssociations/Directory.Audio/shell/]

[HKEY_CLASSES_ROOT/SystemFileAssociations/Directory.Audio/shellex/ContextMenuHandlers/]

1.1.2 对于视频文件夹,右键菜单将从以下位置加载项:
[HKEY_CLASSES_ROOT/SystemFileAssociations/Directory.Video/shell/]

[HKEY_CLASSES_ROOT/SystemFileAssociations/Directory.Video/shellex/ContextMenuHandlers/]

1.1.3 对于图片文件夹,右键菜单将从以下位置加载项:
[HKEY_CLASSES_ROOT/SystemFileAssociations/Directory.Image/shell/]

[HKEY_CLASSES_ROOT/SystemFileAssociations/Directory.Image/shellex/ContextMenuHandlers/]

1.2 应用于驱动器的右键菜单项位于注册表中如下位置:

[HKEY_CLASSES_ROOT/Drive/Shell/]

[HKEY_CLASSES_ROOT/Folder/Shell/]

[HKEY_CLASSES_ROOT/Drive/ShellEx/ContextMenuHandlers/]

[HKEY_CLASSES_ROOT/Folder/ShellEx/ContextMenuHandlers/]

1.3 要移除 Namespace 图标(例如我的电脑、回收站等),可以检查以下位置:

[HKEY_CLASSES_ROOT/Folder/Shell/]

[HKEY_CLASSES_ROOT/Folder/ShellEx/ContextMenuHandlers/]

[HKEY_CLASSES_ROOT/CLSID/{Namespace-CLSID}/shell/]

[HKEY_CLASSES_ROOT/CLSID/{Namespace-CLSID}/shellex/ContextMenuHandlers/]

1.4.应用于文件的右键菜单项位于注册表中如下位置:

[HKEY_CLASSES_ROOT/<ProgID>/shellex/ContextMenuHandlers/]

[HKEY_CLASSES_ROOT/AllFilesystemObjects/shellex/ContextMenuHandlers/]

[HKEY_CLASSES_ROOT/*/shellex/ContextMenuHandlers/]

[HKEY_CLASSES_ROOT/*/shell/]

注意:[HKEY_CLASSES_ROOT/AllFilesystemObjects/shell/]项可以用于文件和文件夹

例如:.lnk 快捷方式文件的右键菜单将从以下位置构建:

[HKEY_CLASSES_ROOT/lnkfile/shellex/ContextMenuHandlers/]

[HKEY_CLASSES_ROOT/exefile/shell/]

[HKEY_CLASSES_ROOT/exefile/shellex/ContextMenuHandlers/]

[HKEY_CLASSES_ROOT/AllFilesystemObjects/shell/]

[HKEY_CLASSES_ROOT/AllFilesystemObjects/shellex/ContextMenuHandlers/]

[HKEY_CLASSES_ROOT/*/shell/]

[HKEY_CLASSES_ROOT/*/shellex/ContextMenuHandlers/]

2 常见问题:

Q1:安装软件之后,如何去掉右键菜单中不想要的项?
A1:通常,只需要到[HKEY_CLASSES_ROOT/*/shellex/ContextMenuHandlers/]分支下找到相应的内容并删除即可。如果在该分支下没有找到,可以尝试到[HKEY_CLASSES_ROOT/文件类型/]分支寻找,或者在注册表中搜索显示在右键菜单中的内容

Q2:如何删除 IE 右键菜单中不想要的项?
A2:非标准的右键菜单项可以从[HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/MenuExt/]分支下找到并删除,删除后需要重启 IE 才会生效

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Qt中,右键菜单通常用于对控件进行操作和显示上下文相关的菜单。下面演示一下如何在一个QTreeView控件上添加右键菜单: 1. 在要添加右键菜单的QWidget控件类中,添加一个私有成员变量QMenu *m_menu。 2. 在QWidget的构造函数中,创建QMenu对象,并添加QAction动作,将QAction添加到QMenu中。 ```cpp m_menu = new QMenu(this); // 创建QMenu对象 QAction *action1 = new QAction("Action1", this); QAction *action2 = new QAction("Action2", this); connect(action1, &QAction::triggered, this, &MyWidget::onAction1Triggered); connect(action2, &QAction::triggered, this, &MyWidget::onAction2Triggered); m_menu->addAction(action1); // 添加QAction到QMenu中 m_menu->addAction(action2); ``` 3. 重写QWidget的contextMenuEvent事件函数,在其中获取鼠标坐标,并在该位置显示QMenu菜单。 ```cpp void MyWidget::contextMenuEvent(QContextMenuEvent *event) { m_menu->exec(event->globalPos()); // 在鼠标位置显示QMenu菜单 } ``` 4. 处理QAction动作对应的槽函数。 ```cpp void MyWidget::onAction1Triggered() { // 处理Action1动作 } void MyWidget::onAction2Triggered() { // 处理Action2动作 } ``` 完整示例代码如下: ```cpp class MyWidget : public QWidget { Q_OBJECT public: MyWidget(QWidget *parent = nullptr) : QWidget(parent) { m_menu = new QMenu(this); // 创建QMenu对象 QAction *action1 = new QAction("Action1", this); QAction *action2 = new QAction("Action2", this); connect(action1, &QAction::triggered, this, &MyWidget::onAction1Triggered); connect(action2, &QAction::triggered, this, &MyWidget::onAction2Triggered); m_menu->addAction(action1); // 添加QAction到QMenu中 m_menu->addAction(action2); } protected: void contextMenuEvent(QContextMenuEvent *event) override { m_menu->exec(event->globalPos()); // 在鼠标位置显示QMenu菜单 } private slots: void onAction1Triggered() { // 处理Action1动作 } void onAction2Triggered() { // 处理Action2动作 } private: QMenu *m_menu; }; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值