在中实现了用 Python 将当前时间复制到剪切板中。这篇文章将进一步实现在 Windows 桌面右键菜单中加入这个功能。
首先是 Python 实现:
1 2 3 4 5 6 7 8
| import time, pyperclip
def get_time(): time_str = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) pyperclip.copy(time_str)
if __name__ == '__main__': get_time()
|
保存以上代码为 get_time.pyw.
修改注册表加入到右键菜单
WIN + R 输入 ‘regedit’ 打开注册表编辑器, 定位到 ‘计算机\HKEY_CLASSES_ROOT\Directory\Background\shell’ 可以看到类似如下结构:
1 2 3 4 5
| ----Background\ |----shell\ |----AnyCode |----cmd |----Powershell
|
右击 ‘shell’, 新建 - 项 并命名该项为 “获取当前时间”或其他名称,在双击右侧窗口中名称为 ‘默认’ 的项目,在弹出窗口的 ‘数值数据(V):’ 输入框中输入 “获取当前日期时间” 或其他字符串。输入的字符串即为在右键菜单显示的项目名称。
回到前面新建的 “获取日期时间” 项,右击该项并新建一个名为 “command” 的项,在右侧窗口中双击打开默认项, 并在数值数据中输入如下命令:
1
| {python_path}\pythonw.exe {pyw_file}\get_time.pyw
|
{python_path}
为 Python 的安装路径,可以用 where python
命令找到 ; {pyw_file}
是 get_time.pyw 文件所在的路径。点击确定。
如果想在右键菜单删除该项目只需要打开注册表编辑器定位到 ‘计算机\HKEY_CLASSES_ROOT\Directory\Background\shell\获取当前时间’ 并删除 “获取当前时间” 项即可。
用 winreg 自动添加到注册表
添加到注册表:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| import winreg as reg from pathlib import Path import sys
def add_key(menu_name): key = reg.OpenKey(reg.HKEY_CLASSES_ROOT,"Directory\\Background\\shell") reg.SetValue(key, menu_name, reg.REG_SZ, menu_name_value) sub_key = reg.OpenKey(key, menu_name)
python_path = Path(sys.executable).parent / "pythonw.exe" add_reg_path = Path.cwd() / Path('get_time.pyw')
menu_command = str(python_path) +" "+ str(add_reg_path) reg.SetValue(sub_key, 'command', reg.REG_SZ, menu_command)
if __name__ == '__main__': menu_name = "获取当前时间" menu_name_value = "获取当前时间" add_key()
|
从注册表中删除:
1 2 3 4 5 6 7 8 9 10 11
| import winreg as reg
def delete_key(menu_name): key = reg.OpenKey(reg.HKEY_CLASSES_ROOT,"Directory\\Background\\shell") sub_key = reg.OpenKey(key, menu_name) reg.DeleteKey(sub_key,'command') reg.DeleteKey(key,menu_name)
if __name__ == '__main__': menu_name = "获取当前时间" delete_key(menu_name)
|
上面两段 code 都需要用管理员权限来执行。