在中实现了用 Python 将当前时间复制到剪切板中。这篇文章将进一步实现在 Windows 桌面右键菜单中加入这个功能。
首先是 Python 实现:
| 12
 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’ 可以看到类似如下结构:
| 12
 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 自动添加到注册表
添加到注册表:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 
 | import winreg as regfrom 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()
 
 | 
从注册表中删除:
| 12
 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 都需要用管理员权限来执行。