明经CAD社区

 找回密码
 注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

楼主: 秋枫

[资源] AutoCAD二次开发安装程序制作(2011-04-20)

    [复制链接]
 楼主| 发表于 2005-6-11 13:15 | 显示全部楼层
To 孤独客:


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


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


你如果要加载菜单,就不要在Appload中加载了,你需要研究一下AutoCAD的MENUS键值下的东东。大致的方法与这写法差不多,我注意到你把所有的函数都注释出来了,既然明白这些函数的功能,应该可以举一反三写出在MENUS中添加MNS的代码。
 楼主| 发表于 2005-6-11 13:17 | 显示全部楼层
另,你提供的图片是链接至你的本地硬盘的,所以除了你别人都看不到。
发表于 2005-6-13 20:42 | 显示全部楼层
本帖最后由 作者 于 2005-6-13 22:29:11 编辑

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


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





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


如果依你的AUTOCAD2006为例


RegGetSubkeyNames(HKCU, Software\Autodesk\AuoCAD\R16.2',SupportedAcadKeys1)
SupportedAcadKeys1值应改是什么呢
发表于 2005-6-13 22:36 | 显示全部楼层
秋枫发表于2005-6-11 13:17:00另,你提供的图片是链接至你的本地硬盘的,所以除了你别人都看不到。
我怎么才能让大家都看到呢?
发表于 2005-6-16 11:36 | 显示全部楼层
秋大侠:我用那个旧版就是能支持r14版本的那个已经有一段时间了,有个问题今天想问一下,就是每当我运行一次CAD2004后,R14里那个菜单就不自动加载了,需要点一次修复,怎么能解决这个问题呢?
 楼主| 发表于 2005-6-26 15:24 | 显示全部楼层
bh5280发表于2005-6-16 11:36:00秋大侠:我用那个旧版就是能支持r14版本的那个已经有一段时间了,有个问题今天想问一下,就是每当我运行一次CAD2004后,R14里那个菜单就不自动加载了,需要点一...
这个无法解决。因为2004与14的菜单文件MNC格式不同。 针对不同的AutoCAD版本使用不同的MNU文件即可。新版的可以通用LSP实现这点,但不支持R14了。
 楼主| 发表于 2005-6-26 15:26 | 显示全部楼层
孤独客发表于2005-6-13 20:42:00我改成LISP文件也没有写进注册表, 那些解释是我从网上下载的 我对函数解释中的排列不怎么明白? 如果依你的AUTOCAD2006为例 Re...

那个是用于返回结果用的。不需要你给它值,只需要提供一个变量名就行了。这个变量中会存储返回的结果。
发表于 2005-6-27 22:17 | 显示全部楼层
小弟急用,先谢谢了! var i, j, k, n: integer;
StartupToAdd, key, tmp: string;
SupportedAcadKeys,profiles: TArrayOfString;
StringList: TStringList;
ApploadLoadCtrls: Cardinal;
BEGIN
StartupToAdd := 'c:\lispsetup\lisp\cttsetup.lsp';
RegGetSubkeyNames(HKCU, 'Software\Autodesk\AuoCAD\R15.0',SupportedAcadKeys)
// 设置appload的loadctrls
for i := 0 to GetArrayLength(SupportedAcadKeys) -1 do //GetArrayLength获取排列长度。
begin
if RegQueryDWordValue(HKLM, 'Software\Autodesk\AuoCAD\R15.0'+SupportedAcadKeys+'\Applications\AcadAppload', 'LOADCTRLS', ApploadLoadCtrls) then //询问指定的 REG_DWORD-type 注册表键/值,并返回值到 ResultDWord。如果成功返回 True。当返回 False 时,不修改 ResultDWord 值。 begin
ApploadLoadCtrls := (ApploadLoadCtrls or 2);
RegWriteDWordValue(HKLM, 'Software\Autodesk\AuoCAD\R15.0'+SupportedAcadKeys+'\Applications\AcadAppload', 'LOADCTRLS', ApploadLoadCtrls); //写入指定的 REG_DWORD-type 注册表值,如果完成则返回 True,反之返回 False。
end;
if RegQueryDWordValue(HKCU, 'Software\Autodesk\AuoCAD\R15.0'+SupportedAcadKeys+'\Applications\AcadAppload', 'LOADCTRLS', ApploadLoadCtrls) then //询问指定的 REG_DWORD-type 注册表键/值,并返回值到 ResultDWord。如果成功返回 True。当返回 //False 时,不修改 ResultDWord 值。 begin
ApploadLoadCtrls := (ApploadLoadCtrls or 2);
RegWriteDWordValue(HKCU, 'Software\Autodesk\AuoCAD\R15.0'+SupportedAcadKeys+'\Applications\AcadAppload', 'LOADCTRLS', ApploadLoadCtrls);
end;
end;
StringList := TStringList.Create;
try
for i := 0 to GetArrayLength(SupportedAcadKeys) -1 do
if RegGetSubkeyNames(HKCU, 'Software\Autodesk\AuoCAD\R15.0'+SupportedAcadKeys+'\Profiles\', profiles) // 并且存在Profiles, 取得所有Profiles
then
for j := 0 to GetArrayLength(profiles)-1 do
if regkeyExists(HKCU, 'Software\Autodesk\AuoCAD\R15.0'+SupportedAcadKeys+'\Profiles\'+profiles[j]+'\Dialogs') then
begin
key := 'Software\Autodesk\AuoCAD\R15.0'+SupportedAcadKeys+'\profiles\'+profiles[j]+'\Dialogs\Appload\Startup';
if not regkeyExists(HKCU, key) then RegWriteStringValue(HKCU, key, 'NumStartup', '0');
RegQueryStringValue(HKCU, key, 'NumStartup', tmp);
// 读入已有Startup列表
n := StrToIntDef(tmp, 0); //转换字符串到一个数字,
StringList.Clear;
for k := 1 to n do
begin
RegQueryStringValue(HKCU, key, IntToStr(k)+'Startup', tmp);
StringList.Add(tmp);
RegDeleteValue(HKCU, key, IntToStr(k)+'Startup');
end;
// 去除重复文件与不存在的文件
for k := StringList.Count - 1 downto 0 do
if (UpperCase(StringList[k])=UpperCase(startupToAdd)) or (not FileExists(StringList[k])) //UPPERCASE (s string)返回s中相同文字的字符串但所有字母都转换成大写字母
then StringList.Delete(k);
// 添加要加的文件
StringList.Add(startupToAdd);
// 重建键值
for k := 0 to StringList.Count - 1 do
RegWriteStringValue(HKCU, key, IntToStr(k+1)+'Startup', StringList[k]);
// 设置总数
RegWriteStringValue(HKCU, key, 'NumStartup', IntToStr(StringList.Count));
end;
finally
StringList.Free;
end;
END.
发表于 2005-7-7 16:03 | 显示全部楼层
请教版主:如果我要将不同的文件安装复制到不同的目录下,该怎么办
 楼主| 发表于 2005-7-9 17:33 | 显示全部楼层
将不同的文件安装复制到不同的目录下,只能你自己写安装程序了。我这个不是万能的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号  
©2000-2017 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2018-4-23 04:18 , Processed in 0.146406 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2013 Comsenz Inc.

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