找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1506|回复: 10

[求助] 怎样编程实现自定义下拉菜单的加载?

[复制链接]

已领礼包: 5个

财富等级: 恭喜发财

发表于 2015-4-28 16:45:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 liuzhaoyzz 于 2015-4-28 17:02 编辑

以一个简单的自定义菜单为例,怎么样用编程实现自定义下拉菜单的加载?
//
//      AutoCAD 菜单文件 - C:\Program Files\AutoCAD 2004\Support\laohecadtool.mns
//

***MENUGROUP=晓东工具箱

***POP1
**晓东工具箱
ID_01  [晓东工具箱]
ID_09  [填充面积]^C^C_XDTB_HatchArea

***TOOLBARS
**晓东工具箱
ID_16  [_Button("填充面积", "填充面积.bmp", "ICON_16_ARRREC")]^C^C_XDTB_HatchArea

//
//      AutoCAD 菜单文件结尾 - C:\Program Files\AutoCAD 2004\Support\laohecadtool.mns
//

这个菜单用CAD的menuload已经能够成功加载到CAD2004中,现在想要实现的是:
用编程的方法实现自动安装这个菜单,类似晓东工具箱的安装一样,用一个XDTBOX30_For2004_2005.exe就把xdsoft.mns自动加载到局部菜单,我想知道,这是用什么编程语言来实现的,具体是怎么实现的,quelea,秋枫与Eachy可否提供源代码?我想用个VBA来实现,一键搞定,是否可行呢?

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 264个

财富等级: 日进斗金

发表于 2015-4-28 16:53:13 | 显示全部楼层
google 有现成例子

MenuBar
  PopupMenu

MenuGroups
      MenuGroup
           PopupMenus -> PopupMenu -> PopupMenuItem
           ToolBars -> ToolBar->ToolBarItem
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5个

财富等级: 恭喜发财

 楼主| 发表于 2015-4-28 16:58:32 | 显示全部楼层
楼上能否详细点?看不懂啊?我的意思是菜单已经没问题了,问题是怎么一键安装到cad之中,类似天正这样的安装。具体是用什么编程语言来实现安装的呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 264个

财富等级: 日进斗金

发表于 2015-4-28 17:01:04 | 显示全部楼层
menuload 加载一次即可显示,或者将 menuload 语句放入那些自动加载文件,比如 acad.lsp acaddoc.lsp 等等
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5个

财富等级: 恭喜发财

 楼主| 发表于 2015-4-28 17:09:09 | 显示全部楼层
menuload怎么确定我的这个局部菜单在acad.mnu基础菜单的位置是第几个?最后一个吗?menuload命令似乎不能完全搞定菜单的加载,2006可能没有问题,2004版本还需要选择用户菜单,然后单击插入,系统才会在下拉菜单中更新。
acad.lsp acaddoc.lsp里面写入menuload,晓东工具箱安装工具似乎不是这样做的?
因为我的电脑C盘就没有这两个自动加载文件,因为许多病毒是这样子加载的,我用了筑原cad杀毒直接干掉他们了,但是xdsoft.mns一样顺利加载。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5个

财富等级: 恭喜发财

 楼主| 发表于 2015-4-28 17:16:34 | 显示全部楼层
秋枫写的安装工具,安装的时候,cad根本没有打开,安装后直接就有了晓东工具箱下拉菜单,这也就是说,晓东工具箱安装软件不可能是用menuload来加载xdsoft.mns的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5个

财富等级: 恭喜发财

 楼主| 发表于 2015-4-28 17:23:21 | 显示全部楼层
晓东工具箱有个setreg.exe,是用delphi编写的,似乎是用这个写注册表实现xdsoft.mns的安装?
TM截图20150428172254.jpg
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 859个

财富等级: 财运亨通

发表于 2015-4-28 17:35:57 | 显示全部楼层
自己手动 menuload 加载一下,看看注册表哪里添加了,然后自己写一个一样的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2015-4-28 19:09:31 | 显示全部楼层
菜单加载后在这里增加 group1 group2 ....

HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R20.1\ACAD-F001:804\Profiles\<<未命名配置>>\Menus
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5个

财富等级: 恭喜发财

 楼主| 发表于 2015-4-28 21:51:13 | 显示全部楼层
看了下确实如st788696所说,cad2004局部菜单保存在:
[HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R16.0\ACAD-201:804\Profiles\<<未命名配置>>\Menus]
"Pop1"="ACAD pop1"
"Pop2"="ACAD pop2"
"Pop3"="ACAD pop3"
"Pop4"="ACAD pop4"
"Pop5"="ACAD pop5"
"Pop6"="ACAD pop6"
"Pop7"="ACAD pop7"
"Pop8"="ACAD pop8"
"Pop9"="ACAD pop9"
"Pop10"="ACAD pop10"
"Pop11"="ACAD pop11"
"Pop500"="ACAD pop500"
"Pop501"="ACAD pop501"
"Pop502"="ACAD pop502"
"Pop503"="ACAD pop503"
问题是注册表改了之后,工具栏确实能够加载,但是下拉菜单还是不能自动加载,还需要手工加载才行,不知道问题出在哪里?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5个

财富等级: 恭喜发财

 楼主| 发表于 2015-4-28 23:23:10 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2015-4-28 23:32 编辑

我用regfromapp监视CAD进程,终于找到了下拉菜单加载前后的区别,谢谢st788696
加载菜单组.reg
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R16.0\ACAD-201:804\Profiles\<<未命名配置>>\Dialogs\MenuLoadDialog]
"ActiveTab"=dword:00000001

[HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R16.0\ACAD-201:804\Profiles\<<未命名配置>>\Menus]
"Group1"="LAOHEtools C:\\Program Files\\AutoCAD 2004\\Support\\laohecadtool"
"Pop11"="LAOHEtools pop1"
"Pop12"="ACAD pop11"


卸载下拉菜单.reg
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R16.0\ACAD-201:804\Profiles\<<未命名配置>>\Dialogs\MenuLoadDialog]
"ActiveTab"=dword:00000000

[HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R16.0\ACAD-201:804\Profiles\<<未命名配置>>\Menus]
"Pop11"="ACAD pop11"

批处理配合注册表文件实现一键安装:
扩展添加晓东下拉菜单.bat
copy laohecadtool.mns "C:\Program Files\AutoCAD 2004\support" /y
copy *.bmp "C:\Program Files\AutoCAD 2004\support" /y
reg import "加载菜单组.reg"



论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-19 18:59 , Processed in 0.293282 second(s), 54 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表