- 积分
- 1991
- 明经币
- 个
- 注册时间
- 2004-7-21
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
发表于 2005-6-27 22:17:00
|
显示全部楼层
小弟急用,先谢谢了!
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. |
|