精易论坛

标题: 创建桌面鼠标右键菜单SP,同时支持单级多级 [打印本页]

作者: 月下美孤    时间: 2023-3-2 23:12
标题: 创建桌面鼠标右键菜单SP,同时支持单级多级
  
窗口程序集名保 留  保 留备 注
桌面右键菜单   
变量名类 型数组备 注
注册表注册表操作Ex  

子程序名返回值类型公开备 注
桌面右键菜单_创建SP整数型 成功返回空,失败返回失败原因
参数名类 型参考可空数组备 注
主菜单名文本型桌面右键显示的菜单名
主菜单软件路径文本型创建一级菜单如不填写,点击菜单会报错,创建二级菜单时此参数无效
二级菜单名称文本型二级菜单的显示名称数组
二级软件路径文本型二级菜单点击后打开的软件路径,数组最大长度为二级菜单的数量
主菜单图标字节集菜单的图标
二级菜单图标字节集二级菜单的图标
变量名类 型静态数组备 注
i整数型 
二级菜单数量整数型 
SubCommands关联项文本型SubCommands项的字符串值,以分号“;”隔开,用于主菜单与二级菜单相关联
判断 (取数组成员数 (二级菜单名称) = 0)  ' 只创建一级
注册表.写入键值Ex_文本 ( #HKEY_CLASSES_ROOT, “Directory\Background\shell\” + 主菜单名, “Icon”, 主菜单图标, #REG_SZ, )  ' //菜单图标
返回 (注册表.写入键值Ex_文本 ( #HKEY_CLASSES_ROOT, “Directory\Background\shell\” + 主菜单名 + “\command\”, “”, 到字节集 (主菜单软件路径), #REG_SZ, ))  ' //菜单点击后打开的软件路径



判断 (取数组成员数 (二级菜单名称)取数组成员数 (二级软件路径))
返回 (110)  ' 二级菜单软件路径与二级菜单名称 的 数组长度不一致!!



二级菜单数量 = 取数组成员数 (二级菜单名称)
重定义数组 (二级菜单图标, 真, 二级菜单数量)
变量循环首 (1, 二级菜单数量, 1, i)
' //第一步
注册表.写入键值Ex_文本 ( #HKEY_LOCAL_MACHINE, “SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\desm_MyMenu”到文本 (i), “Icon”, 二级菜单图标 [i], #REG_SZ, )  ' //二级菜单图标
注册表.写入键值Ex_文本 ( #HKEY_LOCAL_MACHINE, “SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\desm_MyMenu”到文本 (i), “”, 到字节集 (二级菜单名称 [i]), #REG_SZ, )  ' //二级菜单名称(默认项)
注册表.写入键值Ex_文本 ( #HKEY_LOCAL_MACHINE, “SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\desm_MyMenu”到文本 (i)“\command”, “”, 到字节集 (二级软件路径 [i]), #REG_SZ, )  ' //二级菜单点击后打开的软件路径
SubCommands关联项 = SubCommands关联项 + “desm_MyMenu”到文本 (i)“;”
变量循环尾 ()
' //第二步
注册表.写入键值Ex_文本 ( #HKEY_CLASSES_ROOT, “Directory\Background\shell\” + 主菜单名, “Icon”, 主菜单图标, #REG_SZ, )  ' //首级菜单图标
返回 (注册表.写入键值Ex_文本 ( #HKEY_CLASSES_ROOT, “Directory\Background\shell\” + 主菜单名, “SubCommands”, 到字节集 (SubCommands关联项), #REG_SZ, ))  ' //二级菜单链接(单个:mune1; 多个:menu1;menu2;menu3;...)


子程序名返回值类型公开备 注
桌面右键菜单_删除 用户删除桌面右键菜单,会同时删除主菜单名关联的二级菜单
参数名类 型参考可空数组备 注
主菜单名文本型桌面右键显示的菜单名
变量名类 型静态数组备 注
rev注册表_键 
关联的二级菜单项目文本型0
i整数型 
注册表.打开键Ex ( #HKEY_CLASSES_ROOT, “Directory\Background\shell\” + 主菜单名)
注册表.读取键值Ex ( #HKEY_CLASSES_ROOT, “Directory\Background\shell\” + 主菜单名, “SubCommands”, rev)
注册表.关闭键Ex ()
关联的二级菜单项目 = 分割文本 (字节集_到文本 (rev.键值), “;”, )  ' 二级菜单名称数组
如果真 (取数组成员数 (关联的二级菜单项目) > 0)  ' SubCommands有值,说明是二级菜单
变量循环首 (1, 取数组成员数 (关联的二级菜单项目), 1, i)
注册表.删除注册表项 ( #HKEY_LOCAL_MACHINE, “SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\” + 关联的二级菜单项目 [i]“\command”)  ' 经实测,需先删除commad,不然无法删除键值
注册表.删除注册表项 ( #HKEY_LOCAL_MACHINE, “SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\” + 关联的二级菜单项目 [i])
变量循环尾 ()
注册表.关闭键Ex ()
注册表.删除注册表项 ( #HKEY_CLASSES_ROOT, “Directory\Background\shell\” + 主菜单名 + “\command”)
注册表.删除注册表项 ( #HKEY_CLASSES_ROOT, “Directory\Background\shell\” + 主菜单名)

桌面右键菜单_多级.e

954.11 KB, 下载次数: 53, 下载积分: 精币 -2 枚


作者: 月下美孤    时间: 2023-3-2 23:15
精易模块的bug还是多
作者: 3251819574    时间: 2023-3-2 23:56
精易模块的bug还是多

作者: qcby    时间: 2023-3-3 00:17
感谢分享,学习了
作者: jysoft2022    时间: 2023-3-3 07:00
谢谢分享
作者: 美味萝卜    时间: 2023-3-3 07:30
开源精神必须支持~
作者: pjm123    时间: 2023-3-3 08:54
谢谢分享
作者: 熬夜    时间: 2023-3-3 08:58
感谢分享,很给力!~
作者: wuqingg    时间: 2023-3-3 19:35
开源精神必须支持~
作者: 一指温柔    时间: 2023-3-3 21:38
感谢分享,很给力
作者: 亿万    时间: 2023-3-3 21:43
谢谢分享
作者: lvfajun    时间: 2023-3-4 11:04
感谢分享,很给力
作者: 深圳梦    时间: 2023-3-4 18:49
        感谢分享,很给力!~
作者: 396384183    时间: 2023-3-5 00:48

感谢分享 支持开源 !
作者: 我非平凡    时间: 2023-3-10 13:06
#在这里快速回复#        开源精神必须支持~
作者: abnerll    时间: 2023-3-24 15:36
感谢分享
作者: 野鸭子    时间: 2023-8-17 14:41
开源精神必须支持~
作者: yxrs123    时间: 2024-10-2 20:11
开源精神必须支持~




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4