明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: tengte

[求助]关于通过注册表自动加载FAS文件的 奇怪问题(已解决)

    [复制链接]
 楼主| 发表于 2009-7-6 23:02:00 | 显示全部楼层
回9楼:VBS程序是一种VB的脚本语言,可用记事本之类的文本编辑器编写,保存为后缀为“.vbs”的文件即可,双击即可运行。我采用这种程序的目的就是编写类似于安装程序的功能,实现在下次打开CAD时自动加载指定的LSP或FAS文件,这个VBS程序不需要在CAD中运行。如果你要在LSP程序中实现上述功能,可用7楼的方法。
 楼主| 发表于 2009-7-12 16:59:00 | 显示全部楼层

之前我发的VBS程序还有一点小问题:如果CAD从来没有打开过加载应用程序的对话框,那么运行时就会发错。现我已改进了这个问题,使之作为“安装程序”更为适用。其内容如下:

Dim WS, REG, Path, Key, SubKey, Value, el, flag
Set WS = WScript.CreateObject("WScript.Shell")
Path = WS.CurrentDirectory & "\Load.fas"
Set REG = GetObject("winmgmts:\\.\root\default:StdRegProv")
HKCU = &H80000001
HKLM = &H80000002
Key = "Software\Autodesk\AutoCAD"
REG.GetStringValue HKCU, Key, "CurVer", Value
Key = Key & "\" & Value
REG.GetStringValue HKCU, Key, "CurVer", Value
Key = Key & "\" & Value
SubKey = "\Profiles"
REG.GetStringValue HKCU, Key & SubKey, "", Value
SubKey = SubKey & "\" & Value & "\Dialogs\Appload\Startup"
REG.EnumValues HKCU, Key & SubKey, Item, Value
If IsNull(Item) Then
  REG.CreateKey HKCU, Key & SubKey
  REG.SetStringValue HKCU, Key & SubKey, "", "1"
  REG.SetStringValue HKCU, Key & SubKey, "NumStartup", "1"
  REG.SetStringValue HKCU, Key & SubKey, "1Startup", Path
  SubKey = "\Applications\AcadAppload"
  REG.CreateKey HKCU, Key & SubKey
  REG.GetStringValue HKLM, Key & SubKey, "DESCRIPTION", Value
  REG.SetStringValue HKCU, Key & SubKey, "DESCRIPTION", Value
  REG.GetStringValue HKLM, Key & SubKey, "LOADER", Value
  REG.SetStringValue HKCU, Key & SubKey, "LOADER", Value
  REG.GetDWORDValue HKLM, Key & SubKey, "LOADCTRLS", Value
  Value = Value or 2
  REG.SetDWORDValue HKCU, Key & SubKey, "LOADCTRLS", Value
  MsgBox "成功加入自动加载列表!"
Else
  REG.GetStringValue HKCU, Key & SubKey, "", Value
  flag = False
  If Not IsNull(Value) Then
    Item = Value & "Startup"
    REG.GetStringValue HKCU, Key & SubKey, Item, Value
    If UCase(Right(Value,9))="\LOAD.FAS" Then flag = True
  End if
  IF flag Then
    MsgBox "TB Tools 已在自动加载列表中!"
  Else
    REG.GetStringValue HKCU, Key & SubKey, "NumStartup", Value
    Value = CStr(CInt(Value)+1)
    Item = Value & "Startup"
    REG.SetStringValue HKCU, Key & SubKey, "", Value
    REG.SetStringValue HKCU, Key & SubKey, "NumStartup", Value
    REG.SetStringValue HKCU, Key & SubKey, Item, Path
    SubKey = "\Applications\AcadAppload"
    REG.GetDWORDValue HKCU, Key & SubKey, "LOADCTRLS", Value
    Value = Value or 2
    REG.SetDWORDValue HKCU, Key & SubKey, "LOADCTRLS", Value
    MsgBox "成功加入自动加载列表!"
  End if
End if

发表于 2009-8-5 09:57:00 | 显示全部楼层
请问按你的程序CAD2004可用,可是CAD2002就没反应,如何让他适应CAD2002或更高版本?请大侠指导,谢谢!
 楼主| 发表于 2009-8-5 23:19:00 | 显示全部楼层
高版本应该没有问题,CAD2002没有装过。不过举一反三,在注册表里查找相关的设置应该可以解决。
发表于 2009-8-6 07:43:00 | 显示全部楼层
还有就是如何做到把(指定加载同目录下的Load.fas文件),改为(指定加载不同目录下的Load.fas文件),即我的*.VBS在D:\AA\kk.VBS,而Load.fas在C:\bb\Load.fas.请高手指导,谢谢!
发表于 2009-8-6 17:20:00 | 显示全部楼层
谢谢分享,感谢楼主!
 楼主| 发表于 2009-8-8 18:46:00 | 显示全部楼层
回15楼:把第3行Path = WS.CurrentDirectory & "\Load.fas"
改为你想要的绝对路径或相对路径就行了
发表于 2009-8-8 20:48:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2009-8-8 21:49:00 | 显示全部楼层
我改了,也用了,只是有时是加载在cad2008,有时在CAD2004,怪事?这个程序最后连注册表也没加也可用,只不过是不稳定。如何解决一次性加载到CAD2002-2008所有版本?
发表于 2011-10-15 09:07:40 | 显示全部楼层
tengte 你好,你的代码不能加载所有acad版本和所有配置Profiles下,我想应该要遍历注册表才行,不过不知怎么写,但vbs,一点都不会
有时间能帮忙给改下吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-23 19:04 , Processed in 0.160204 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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