python右键弹出菜单编写_windows下python管理右键菜单

实现很简单,不记得什么时候写的了,贴出来希望能有所价值

"""

Windows中创建右键菜单

"""

import os

import sys

import winreg

import ctypes

def is_user_admin():

""" 检查admin """

return ctypes.windll.shell32.IsUserAnAdmin()

def run_as_admin():

""" 管理员运行 """

script = os.path.abspath(sys.argv[0])

args = ' '.join(sys.argv[1:]) if len(sys.argv) > 1 else ''

from win32com.shell.shell import ShellExecuteEx

ShellExecuteEx(lpFile=sys.executable, lpParameters=f"{script} {args}",

nShow=1, lpVerb='runas')

return

def create_right_menu(name, icon, command):

""" 创建右键菜单 """

key_root = winreg.HKEY_CLASSES_ROOT

key_path = fr"Directory\Background\shell\{name}"

with winreg.CreateKey(key_root, key_path) as key:

winreg.SetValueEx(key, "Icon", 0, winreg.REG_SZ, icon or '')

with winreg.CreateKey(key, "command") as key2:

winreg.SetValueEx(key2, "", 0, winreg.REG_SZ, command or '')

def remove_right_menu(name):

"""删除右键菜单"""

"""

// from winreg.h

#define HKEY_CLASSES_ROOT (( HKEY ) (ULONG_PTR)((LONG)0x80000000) )

#define HKEY_CURRENT_USER (( HKEY ) (ULONG_PTR)((LONG)0x80000001) )

#define HKEY_LOCAL_MACHINE (( HKEY ) (ULONG_PTR)((LONG)0x80000002) )

#define HKEY_USERS (( HKEY ) (ULONG_PTR)((LONG)0x80000003) )

#define HKEY_PERFORMANCE_DATA (( HKEY ) (ULONG_PTR)((LONG)0x80000004) )

#define HKEY_PERFORMANCE_TEXT (( HKEY ) (ULONG_PTR)((LONG)0x80000050) )

#define HKEY_PERFORMANCE_NLSTEXT (( HKEY ) (ULONG_PTR)((LONG)0x80000060) )

#if (WINVER >= 0x0400)

#define HKEY_CURRENT_CONFIG (( HKEY ) (ULONG_PTR)((LONG)0x80000005) )

#define HKEY_DYN_DATA (( HKEY ) (ULONG_PTR)((LONG)0x80000006) )

#define HKEY_CURRENT_USER_LOCAL_SETTINGS (( HKEY ) (ULONG_PTR)((LONG)0x80000007) )

"""

key_root = 0x80000000 # winreg.HKEY_CLASSES_ROOT

key_path = fr"Directory\Background\shell\{name}"

ctypes.windll.Advapi32.RegDeleteTreeW(key_root, key_path)

def main():

import argparse

parser = argparse.ArgumentParser()

parser.add_argument("name", type=str, help="Name.")

parser.add_argument("-i", "--icon", help="Icon.")

parser.add_argument("-c", "--command", help="Command.")

parser.add_argument("-r", "--remove", action="store_true",

help="Remove with name.")

args = parser.parse_args()

if not is_user_admin():

run_as_admin()

return

try:

if args.remove:

remove_right_menu(args.name)

return

create_right_menu(args.name, args.icon, args.command)

except Exception as ex:

print(ex)

os.system('pause')

if __name__ == '__main__':

main()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值