首页 > 编程语言 >Python 注册菜单

Python 注册菜单

时间:2022-10-05 01:22:05浏览次数:46  
标签:sub 菜单 注册 parent Python menu key reg name

我们看到下面的示例图是 在右键文件夹上查看菜单,带有两级的菜单选项。

需要使用管理员权限运行
因为右键菜单需要注册表信息,打开注册表需要管理员权限UAC,所以在执行命令过程中需要使用管理员权限来执行命令

import sys
import winreg as reg
import os


def add_context_menu_parent(parent_name, reg_root_key_path, reg_key_path):
    # 打开名称父键
    key = reg.OpenKey(reg_root_key_path, reg_key_path)
    # 为key创建一个名称为menu_name的sub_key,并设置sub_key的值为menu_name加上快捷键,数据类型为REG_SZ字符串类型
    reg.SetValue(key, parent_name, reg.REG_SZ, '')

    # 打开刚刚创建的名为menu_name的sub_key
    sub_key = reg.OpenKey(key, parent_name, 0, reg.KEY_ALL_ACCESS)

    # 为sub_key设置成可添加二级菜单
    # reg.SetValueEx(sub_key, 'MUIVerb', 0, reg.REG_SZ,parent_name + '(&{0})'.format(shortcut_key))
    # reg.SetValueEx(sub_key, 'icon', 0, reg.REG_SZ, icon_path)
    # reg.SetValueEx(sub_key, 'MultipleInvokePromptMinimum', 0, reg.REG_DWORD, 1)
    reg.SetValueEx(sub_key, 'SubCommands', 0, reg.REG_SZ, '')
    reg.SetValue(sub_key, 'shell', reg.REG_SZ, '')

    # 关闭sub_key和key
    reg.CloseKey(sub_key)
    reg.CloseKey(key)


def add_context_menu(menu_name, command, reg_root_key_path, reg_key_path, shortcut_key):
    # 打开名称父键
    key = reg.OpenKey(reg_root_key_path, reg_key_path)

    # 为key创建一个名称为menu_name的sub_key,并设置sub_key的值为menu_name加上快捷键,数据类型为REG_SZ字符串类型
    reg.SetValue(key, menu_name, reg.REG_SZ, f'{menu_name}(&{shortcut_key})')

    # 打开刚刚创建的名为menu_name的sub_key
    sub_key = reg.OpenKey(key, menu_name, 0, reg.KEY_ALL_ACCESS)
    # reg.SetValueEx(sub_key, 'icon', 0, reg.REG_SZ, icon_path)

    # 为sub_key添加名为'command'的子键,并设置其值为command + ' "%v"',数据类型为REG_SZ字符串类型
    reg.SetValue(sub_key, 'command', reg.REG_SZ,  command)

    # 关闭sub_key和key
    reg.CloseKey(sub_key)
    reg.CloseKey(key)


if __name__ == "__main__":
 
    parent_name = '服务'
    add_context_menu_parent(parent_name, reg.HKEY_CLASSES_ROOT, r'Directory\shell')
    add_context_menu_parent(parent_name, reg.HKEY_CLASSES_ROOT, r'Directory\Background\shell')

    menu_name0 = '添加'
    # 执行一个python脚本的命令,用于打印命令行参数的第二个参数(即选中的文件路径)
    py_command0 = rf'addwm'
    # 添加文件右键菜单
    add_context_menu(menu_name0, py_command0, reg.HKEY_CLASSES_ROOT, rf'Directory\shell\{parent_name}\shell', 'A')
    add_context_menu(menu_name0, py_command0, reg.HKEY_CLASSES_ROOT, rf'Directory\Background\shell\{parent_name}\shell', 'A')

    menu_name0 = '删除'
    # 执行一个python脚本的命令,用于打印命令行参数的第二个参数(即选中的文件路径)
    py_command0 = rf'removewm'
    # 添加文件右键菜单
    add_context_menu(menu_name0, py_command0, reg.HKEY_CLASSES_ROOT, rf'Directory\shell\{parent_name}\shell', 'R')
    add_context_menu(menu_name0, py_command0, reg.HKEY_CLASSES_ROOT, rf'Directory\Background\shell\{parent_name}\shell', 'R')

    os.system('pause')


文件夹

空白处

标签:sub,菜单,注册,parent,Python,menu,key,reg,name
From: https://www.cnblogs.com/androllen/p/16754924.html

相关文章

  • python安装及环境变量配置
    python环境变量配置1、双击安装包,出现如下的安装界面,选择自定义安装2、选项设置,默认全部勾选即可3、高级配置选线,如图勾选即可4、如下图所示,安装过程中5、......
  • python 输出
    1.print()函数1.1print()输出格式①print()可以输出多个内容print(内容1,内容2,...,内容3)②print(f"内容1{},内容2{}...")③print(""%())1.2print输出换行与不......
  • XX学Python·前端
    HTML:网页结构布局HTML(HyperTextMark-upLanguage)超文本标记语言。HTML控制页面整体布局书写形式用标签形式, <标签名称> </标签名称>,比如: <html></html......
  • XX学Python·高级语法
    闭包和装饰器当返回的内部函数使用了外部函数的变量就形成了闭包,闭包可对外部函数变量进行保存#使用闭包的格式defout_func():print('外部函数调用')a=......
  • XX学Python·mini web开发案例
    mini_web开发案例参考阶段三day07面对对象动态服务器importsocketimportthreadingimportjsonclassWebServer():def__init__(self):#一、创......
  • XX学Python·数据分析工具
    Anaconda管理虚拟环境界面创建虚拟环境:Environment>Create>弹出对话框命令创建虚拟环境:点击CMD.exePrompt这图标下的Launch进入cmd命令行终端condaenvlist......
  • XX学Python·函数
    函数的定义和调用'''#函数定义的格式def函数名(参数1,参数2...):函数体return返回值#函数调用格式函数名(参数1,参数2...)#函数名:绝大多数函数都有函......
  • XX学Python·异常处理
    使用try和except可捕获异常,即在出现异常后不会将代码终止运行,而是执行except中的代码处理异常'''格式:try:可能出现异常的代码except:如果出现了异常,就执......
  • XX学Python·模块和包
    模块的导入#可将别人写好或自己写好的功能直接导入新文件或工程内,导入后可直接调用.#我们没有实现模块中的功能,但是我们讲模块导入后就可以使用该功能,类似于继承......
  • XX学Python·进程与线程
    多任务编程-进程多任务执行方式并发:在一段时间内交替去执行任务并行:多核cpu每个cpu执行一个任务。注:任务>cpu时,每个cpu并发执行多个任务进程:计算机中的程......