我們看到下面的示例圖是 在右鍵文件夾上查看菜單,帶有兩級(jí)的菜單選項(xiàng)。
創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括上杭網(wǎng)站建設(shè)、上杭網(wǎng)站制作、上杭網(wǎng)頁(yè)制作以及上杭網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,上杭網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到上杭省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
文件夾
空白處
需要使用管理員權(quán)限運(yùn)行
因?yàn)橛益I菜單需要注冊(cè)表信息,打開(kāi)注冊(cè)表需要管理員權(quán)限UAC,所以在執(zhí)行命令過(guò)程中需要使用管理員權(quán)限來(lái)執(zhí)行命令
import sys
import winreg as reg
import os
def add_context_menu_parent(parent_name, reg_root_key_path, reg_key_path):
# 打開(kāi)名稱父鍵
key = reg.OpenKey(reg_root_key_path, reg_key_path)
# 為key創(chuàng)建一個(gè)名稱為menu_name的sub_key,并設(shè)置sub_key的值為menu_name加上快捷鍵,數(shù)據(jù)類型為REG_SZ字符串類型
reg.SetValue(key, parent_name, reg.REG_SZ, '')
# 打開(kāi)剛剛創(chuàng)建的名為menu_name的sub_key
sub_key = reg.OpenKey(key, parent_name, 0, reg.KEY_ALL_ACCESS)
# 為sub_key設(shè)置成可添加二級(jí)菜單
# 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, '')
# 關(guān)閉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):
# 打開(kāi)名稱父鍵
key = reg.OpenKey(reg_root_key_path, reg_key_path)
# 為key創(chuàng)建一個(gè)名稱為menu_name的sub_key,并設(shè)置sub_key的值為menu_name加上快捷鍵,數(shù)據(jù)類型為REG_SZ字符串類型
reg.SetValue(key, menu_name, reg.REG_SZ, f'{menu_name}(&{shortcut_key})')
# 打開(kāi)剛剛創(chuàng)建的名為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'的子鍵,并設(shè)置其值為command + ' "%v"',數(shù)據(jù)類型為REG_SZ字符串類型
reg.SetValue(sub_key, 'command', reg.REG_SZ, command)
# 關(guān)閉sub_key和key
reg.CloseKey(sub_key)
reg.CloseKey(key)
if __name__ == "__main__":
parent_name = '服務(wù)'
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 = '添加'
# 執(zhí)行一個(gè)python腳本的命令,用于打印命令行參數(shù)的第二個(gè)參數(shù)(即選中的文件路徑)
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 = '刪除'
# 執(zhí)行一個(gè)python腳本的命令,用于打印命令行參數(shù)的第二個(gè)參數(shù)(即選中的文件路徑)
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')