秋枫 发表于 2005-6-11 13:15:00

To 孤独客:


因为时间关系,大致看了一下:


StartupToAdd是要加载的LISP、VBA、ARX程序,你的MNS不是程序,只是一个菜单定义文件。


你如果要加载菜单,就不要在Appload中加载了,你需要研究一下AutoCAD的MENUS键值下的东东。大致的方法与这写法差不多,我注意到你把所有的函数都注释出来了,既然明白这些函数的功能,应该可以举一反三写出在MENUS中添加MNS的代码。

秋枫 发表于 2005-6-11 13:17:00

另,你提供的图片是链接至你的本地硬盘的,所以除了你别人都看不到。

孤独客 发表于 2005-6-13 20:42:00

本帖最后由 作者 于 2005-6-13 22:29:11 编辑

我改成LISP文件也没有写进注册表,


那些解释是我从网上下载的





我对函数解释中的排列不怎么明白?


如果依你的AUTOCAD2006为例


RegGetSubkeyNames(HKCU, Software\Autodesk\AuoCAD\R16.2',SupportedAcadKeys1)
SupportedAcadKeys1值应改是什么呢

孤独客 发表于 2005-6-13 22:36:00

秋枫发表于2005-6-11 13:17:00static/image/common/back.gif另,你提供的图片是链接至你的本地硬盘的,所以除了你别人都看不到。

我怎么才能让大家都看到呢?<BR>

bh5280 发表于 2005-6-16 11:36:00

秋大侠:我用那个旧版就是能支持r14版本的那个已经有一段时间了,有个问题今天想问一下,就是每当我运行一次CAD2004后,R14里那个菜单就不自动加载了,需要点一次修复,怎么能解决这个问题呢?

秋枫 发表于 2005-6-26 15:24:00

bh5280发表于2005-6-16 11:36:00static/image/common/back.gif秋大侠:我用那个旧版就是能支持r14版本的那个已经有一段时间了,有个问题今天想问一下,就是每当我运行一次CAD2004后,R14里那个菜单就不自动加载了,需要点一...


这个无法解决。因为2004与14的菜单文件MNC格式不同。


针对不同的AutoCAD版本使用不同的MNU文件即可。新版的可以通用LSP实现这点,但不支持R14了。<BR>

秋枫 发表于 2005-6-26 15:26:00

孤独客发表于2005-6-13 20:42:00static/image/common/back.gif我改成LISP文件也没有写进注册表,



那些解释是我从网上下载的





我对函数解释中的排列不怎么明白?


如果依你的AUTOCAD2006为例


Re...

<BR>那个是用于返回结果用的。不需要你给它值,只需要提供一个变量名就行了。这个变量中会存储返回的结果。

孤独客 发表于 2005-6-27 22:17:00

小弟急用,先谢谢了!


var i, j, k, n: integer;<BR>       StartupToAdd, key, tmp: string;<BR>       SupportedAcadKeys,profiles: TArrayOfString;<BR>       StringList: TStringList;<BR>       ApploadLoadCtrls: Cardinal;<BR>       BEGIN<BR>       StartupToAdd := 'c:\lispsetup\lisp\cttsetup.lsp';<BR>RegGetSubkeyNames(HKCU, 'Software\Autodesk\AuoCAD\R15.0',SupportedAcadKeys)<BR>       // 设置appload的loadctrls<BR>       for i := 0 to GetArrayLength(SupportedAcadKeys) -1 do               //GetArrayLength获取排列长度。<BR>       begin<BR>                       if RegQueryDWordValue(HKLM, 'Software\Autodesk\AuoCAD\R15.0'+SupportedAcadKeys+'\Applications\AcadAppload', 'LOADCTRLS', ApploadLoadCtrls) then       //询问指定的 REG_DWORD-type 注册表键/值,并返回值到 ResultDWord。如果成功返回 True。当返回 False 时,不修改 ResultDWord 值。


                       begin<BR>                                       ApploadLoadCtrls := (ApploadLoadCtrls or 2);<BR>                                       RegWriteDWordValue(HKLM, 'Software\Autodesk\AuoCAD\R15.0'+SupportedAcadKeys+'\Applications\AcadAppload', 'LOADCTRLS', ApploadLoadCtrls);               //写入指定的 REG_DWORD-type 注册表值,如果完成则返回 True,反之返回 False。<BR>                       end;<BR>                       if RegQueryDWordValue(HKCU, 'Software\Autodesk\AuoCAD\R15.0'+SupportedAcadKeys+'\Applications\AcadAppload', 'LOADCTRLS', ApploadLoadCtrls) then       //询问指定的 REG_DWORD-type 注册表键/值,并返回值到 ResultDWord。如果成功返回 True。当返回 //False 时,不修改 ResultDWord 值。


                       begin<BR>                                       ApploadLoadCtrls := (ApploadLoadCtrls or 2);<BR>                                       RegWriteDWordValue(HKCU, 'Software\Autodesk\AuoCAD\R15.0'+SupportedAcadKeys+'\Applications\AcadAppload', 'LOADCTRLS', ApploadLoadCtrls);<BR>                       end;<BR>       end;<BR>       StringList := TStringList.Create;<BR>       try<BR>                                       for i := 0 to GetArrayLength(SupportedAcadKeys) -1 do<BR>                       if       RegGetSubkeyNames(HKCU, 'Software\Autodesk\AuoCAD\R15.0'+SupportedAcadKeys+'\Profiles\', profiles) // 并且存在Profiles, 取得所有Profiles<BR>                       then<BR>                                       for j := 0 to GetArrayLength(profiles)-1 do<BR>                                                       if regkeyExists(HKCU, 'Software\Autodesk\AuoCAD\R15.0'+SupportedAcadKeys+'\Profiles\'+profiles+'\Dialogs') then<BR>                                                       begin<BR>                                                                       key := 'Software\Autodesk\AuoCAD\R15.0'+SupportedAcadKeys+'\profiles\'+profiles+'\Dialogs\Appload\Startup';<BR>                                                                       if not regkeyExists(HKCU, key) then RegWriteStringValue(HKCU, key, 'NumStartup', '0');<BR>                                                                       RegQueryStringValue(HKCU, key, 'NumStartup', tmp);<BR>                                                                       // 读入已有Startup列表<BR>                                                                       n := StrToIntDef(tmp, 0); //转换字符串到一个数字,<BR>                                                                       StringList.Clear;<BR>                                                                       for k := 1 to n do<BR>                                                                       begin<BR>                                                                               RegQueryStringValue(HKCU, key, IntToStr(k)+'Startup', tmp);<BR>                                                                               StringList.Add(tmp);<BR>                                                                               RegDeleteValue(HKCU, key, IntToStr(k)+'Startup');<BR>                                                                       end;<BR>                                                                       // 去除重复文件与不存在的文件<BR>                                                                       for k := StringList.Count - 1 downto 0 do<BR>                                                                       if (UpperCase(StringList)=UpperCase(startupToAdd)) or (not FileExists(StringList)) //UPPERCASE (s string)返回s中相同文字的字符串但所有字母都转换成大写字母<BR>                                                                                       then StringList.Delete(k);<BR>                                                                       // 添加要加的文件<BR>                                                                       StringList.Add(startupToAdd);<BR>                                                                       // 重建键值<BR>                                                                       for k := 0 to StringList.Count - 1 do<BR>                                                                                               RegWriteStringValue(HKCU, key, IntToStr(k+1)+'Startup', StringList);<BR>                                                                       // 设置总数<BR>                                                                       RegWriteStringValue(HKCU, key, 'NumStartup', IntToStr(StringList.Count));<BR>                                                       end;<BR>       finally<BR>                       StringList.Free;<BR>       end;<BR>       END.

sandy2002 发表于 2005-7-7 16:03:00

请教版主:如果我要将不同的文件安装复制到不同的目录下,该怎么办

秋枫 发表于 2005-7-9 17:33:00

将不同的文件安装复制到不同的目录下,只能你自己写安装程序了。我这个不是万能的。
页: 1 2 3 4 5 [6] 7 8 9 10 11 12 13 14 15
查看完整版本: AutoCAD二次开发安装程序制作(2019-11-11)