📜  在 Python 中右键单击文件的上下文菜单 (1)

📅  最后修改于: 2023-12-03 15:23:16.118000             🧑  作者: Mango

在 Python 中右键单击文件的上下文菜单

在 Python 中通过添加注册表键值来为文件注册右键菜单项,这个功能很有用,可以通过几行 Python 代码完成,方便快捷。

实现步骤

我们需要先创建一个注册表文件 menu.reg ,然后将这个文件的路径在 Python 中使用 winreg 模块打开。

import winreg
registry_path = r"SOFTWARE\Classes\*\shell\Right-click menu\Command"
registry_key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, registry_path, 0, winreg.KEY_ALL_ACCESS)

其中:

  • registry_path 表示注册表中的路径,SOFTWARE\Classes\*\shell\Right-click menu\Command 表示我们为所有文件创建一个右键菜单项,菜单名称为 Right-click menu
  • registry_key 表示我们打开指定路径下的注册表键值,这里我们使用 winreg.OpenKey 方法打开注册表键值。

接着,我们需要将菜单项的名称和命令添加到注册表键值中。

import os
command = r"python "+os.path.abspath(__file__)
winreg.SetValueEx(registry_key, "Command", 0, winreg.REG_SZ, command)
winreg.SetValueEx(registry_key, None, 0, winreg.REG_SZ, "Right-click menu")

其中:

  • os.path.abspath(__file__) 表示获取当前 Python 文件的完整路径。
  • winreg.SetValueEx 方法用来设置具体的注册表键值,参数依次为:键值名称、保留、键值类型、键值数据。

最后我们关闭注册表键值即可。

winreg.CloseKey(registry_key)

完整的 Python 代码如下所示:

import winreg
import os

registry_path = r"SOFTWARE\Classes\*\shell\Right-click menu\Command"
registry_key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, registry_path, 0, winreg.KEY_ALL_ACCESS)

command = r"python "+os.path.abspath(__file__)
winreg.SetValueEx(registry_key, "Command", 0, winreg.REG_SZ, command)
winreg.SetValueEx(registry_key, None, 0, winreg.REG_SZ, "Right-click menu")

winreg.CloseKey(registry_key)
总结

把所需的菜单按要求添加到注册表中即可,文件名和文件路径可以在菜单项中传递,可以在 Python 脚本中编写指向我们脚本的菜单项。

这样,我们就可以在 Python 中通过添加注册表键值来为文件注册右键菜单项,使得项目的开发更加快捷高效。