明经CAD社区

 找回密码
 注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

楼主: 秋枫

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

    [复制链接]
发表于 2005-6-1 09:52 | 显示全部楼层
请问vlx文件怎么制作?
发表于 2005-6-1 23:12 | 显示全部楼层
用文件菜单-->生成应用程序-->新建应用程序向导按提示加入应用程序需用的lsp,fas,prj,dcl文件生成的就是应用程序文件即(VLX         文件)
发表于 2005-6-6 20:37 | 显示全部楼层
LIHAI
发表于 2005-6-6 23:44 | 显示全部楼层
本帖最后由 作者 于 2005-6-7 20:27:34 编辑

为什么我试了,然后安装了,但在开始菜单栏出现的是程序卸载的快捷方式呢?         为什么不是程序启动的快捷方式呢?能指点一下吗?谢谢!
发表于 2005-6-7 20:26 | 显示全部楼层
什么时候我业能懂这么多?
 楼主| 发表于 2005-6-7 21:57 | 显示全部楼层
程序的启动不需要自己的快捷方式。你运行AutoCAD就是了。程序在AutoCAD启动时加载(前提是你Setup制作过程中设置正确)


在开始菜单中提供卸载的快捷方式仅仅是方便卸载。你可以选择不建立开始菜单中的快捷方式,可以从控制面板中卸载程序。
发表于 2005-6-9 17:33 | 显示全部楼层
谢谢!
发表于 2005-6-9 22:59 | 显示全部楼层
秋枫发表于2005-5-30 21:06:00我系统中没有安装2002,无法详细说明,以2006为例,这个与2002的注册表结构是差不多的。 遍历的Innosetup源代码你可以参考本主题的4楼。 如图所示:...
我试者做了,但整个注册表没有写进去啊 下面是我的源代码,请帮帮忙给看看
procedure AddAutoLoadLisp; var i, j, k, n: integer;
StartupToAdd, key, tmp: string;
SupportedAcadKeys1,SupportedAcadKeys,profiles: TArrayOfString;
StringList: TStringList;
ApploadLoadCtrls: Cardinal;
begin
StartupToAdd := 'c:\lisp\menu\ks.mns';
RegGetValueNames(HKCU, 'Software\Autodesk\AuoCAD\',SupportedAcadKeys1)
// 设置appload的loadctrls
for i := 0 to GetArrayLength(SupportedAcadKeys) -1 do //GetArrayLength获取排列长度。
begin
if RegQueryDWordValue(HKLM, SupportedAcadKeys+'\Applications\AcadAppload', 'LOADCTRLS', ApploadLoadCtrls) then //询问指定的 REG_DWORD-type 注册表键/值,并返回值到 ResultDWord。如果成功返回 True。当返回 False 时,不修改 ResultDWord 值。 begin
ApploadLoadCtrls := (ApploadLoadCtrls or 2);
RegWriteDWordValue(HKLM, SupportedAcadKeys+'\Applications\AcadAppload', 'LOADCTRLS', ApploadLoadCtrls); //写入指定的 REG_DWORD-type 注册表值,如果完成则返回 True,反之返回 False。
end;
if RegQueryDWordValue(HKCU, SupportedAcadKeys+'\Applications\AcadAppload', 'LOADCTRLS', ApploadLoadCtrls) then //询问指定的 REG_DWORD-type 注册表键/值,并返回值到 ResultDWord。如果成功返回 True。当返回 //False 时,不修改 ResultDWord 值。 begin
ApploadLoadCtrls := (ApploadLoadCtrls or 2);
RegWriteDWordValue(HKCU, SupportedAcadKeys+'\Applications\AcadAppload', 'LOADCTRLS', ApploadLoadCtrls);
end;
end; StringList := TStringList.Create;
try
for k:=0 to GetArrayLength(SupportedAcadKeys1)-1 do if RegGetSubkeyNames(HKCU, SupportedAcadKeys1[k],SupportedAcadKeys)
then
for i := 0 to GetArrayLength(SupportedAcadKeys) -1 do
if RegGetSubkeyNames(HKCU, SupportedAcadKeys+'\<<未命名配置>>', profiles) // 并且存在Profiles, 取得所有Profiles
then
for j := 0 to GetArrayLength(profiles)-1 do
if regkeyExists(HKCU, SupportedAcadKeys+'\<<未命名配置>>\'+profiles[j]+'\Dialogs') then
begin
key := SupportedAcadKeys+'\<<未命名配置>>\'+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;
end.
下面是我机子上的autocad注册表结构图
发表于 2005-6-9 23:14 | 显示全部楼层
本帖最后由 作者 于 2005-6-10 22:15:02 编辑 c:\snap.jpg
发表于 2005-6-11 08:53 | 显示全部楼层
也许这些对我们有一些用处
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2018-1-23 06:04 , Processed in 1.614638 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2013 Comsenz Inc.

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