明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2981|回复: 8

写“启动组”注册表成功,但CAD第一次启动不运行“启动组”内程序,求高手

[复制链接]
发表于 2014-12-23 09:30 | 显示全部楼层 |阅读模式
我用C#写了注册表,添加了启动组注册表,但是运行CAD,并没有运行启动组里的lsp文件,这时,手动点一下“工具-加载应用程序-启动组“,(不需要更改任何设置),关闭窗口,关闭CAD,再重新开CAD,这个启动组就能自动加载了,这是为什么??如何解决
发表于 2014-12-23 15:56 | 显示全部楼层
说明你注册表操作失败或者错误
 楼主| 发表于 2014-12-23 16:14 | 显示全部楼层
打开注册表看了,注册表也是正确的
发表于 2014-12-23 19:30 | 显示全部楼层
第一次启动后是否可以子在CAD启动组里看到启动文件。
如果看不到,说明写注册表启动文件有问题。

以下是INNO SETUP写注册表启动组,供参考

//将启动文件加入到注册表
        RegWriteStringValue(HKEY_CURRENT_USER,'Software\Autodesk\AutoCAD\R18.2\ACAD-A001:804\Profiles\自定义配置\Dialogs\Appload\Startup','1Startup', '(全路径启动文件.LSP)');
        RegWriteStringValue(HKEY_CURRENT_USER,'Software\Autodesk\AutoCAD\R18.2\ACAD-A001:804\Profiles\自定义配置\Dialogs\Appload\Startup','NumStartup', '1');

        //这项必须,否则在启动组看不到加载的启动程序
        RegWriteDWordValue(HKEY_LOCAL_MACHINE,'Software\Autodesk\AutoCAD\R18.2\ACAD-A001:804\Applications\AcadAppload', 'LOADCTRLS', 15);
        RegWriteDWordValue(HKEY_CURRENT_USER, 'Software\Autodesk\AutoCAD\R18.2\ACAD-A001:804\Applications\AcadAppload', 'LOADCTRLS', 15);
 楼主| 发表于 2014-12-23 22:13 | 显示全部楼层
   //这项必须,否则在启动组看不到加载的启动程序
         RegWriteDWordValue(HKEY_LOCAL_MACHINE,'Software\Autodesk\AutoCAD\R18.2\ACAD-A001:804\Applications\AcadAppload', 'LOADCTRLS', 15);
        RegWriteDWordValue(HKEY_CURRENT_USER, 'Software\Autodesk\AutoCAD\R18.2\ACAD-A001:804\Applications\AcadAppload', 'LOADCTRLS', 15);          这个在我写的时候没有加进去,这个15是什么意思?
 楼主| 发表于 2014-12-24 10:27 | 显示全部楼层
xgr 发表于 2014-12-23 19:30
第一次启动后是否可以子在CAD启动组里看到启动文件。
如果看不到,说明写注册表启动文件有问题。

问题解决了,加上上面两个注册表设置就行了。谢谢 xgr
我从另一个帖子上找到相关内容,也放在这里,供大家参考

0x01:Load the application upon detection of proxy object.
   当代理对像被控知时另载相应ARX程序.
0x02:Load the application upon AutoCAD startup.
   当AutoCAD启动时加载相应ARX程序.
0x04:Load the application upon invocation of a command.
   当输入命令时加载相应ARX程序.
0x08:Load the application upon request by the user or another application.
   当有用户或别的程序请求时加载相应ARX程序.
0x10:Do not load the application.
   从不加载该应用程序.
0x20:Load the application transparently.
   显式加载该应该程序.(不知该项译法是否有误)


这无疑对解决我的问题提供了一把最有效的钥匙。

也许你会问:注册表中的LOADCTRLS并不总是(其实可以说是很少)等于上面的几个值,这又作何解释呢?
其实懂编程的都知道是怎么回事,不懂的我就试着替你解释解释:

如果一个ARX只有上面列出的一种加载方式,那它的LOADCTRLS肯定会等于上面的其中一个值,
如果加载方式不止一种,那就把各种加载方式对应的值相加,如既可以当从命令行输入时加载,
又可以从另一个应用程序中加载,那它的LOADCTRLS值就是0x04+0x08=0x0c(十进制的12),这样应该明白了吧?

看一个ARX被设置成哪几种启动方式,就看ARX的LOADCTRLS值是上面哪几个值相加得来的,上面所列的值一个只能用一次。

但是无论如何,一个ARX的LOADCTRLS值不会等于0x11(17d)、0x12((18d))、0x13(19d)、0x14(20d)、0x17(23d)、0x18(24d)。

因为0x10是从不加载,瞧,多可爱呀!只要它的LOADCTRLS值等于0x10(十进制的16),这个ARX就永远不会被加载了。

摘自网友xshrimp的发言
发表于 2015-4-2 14:32 | 显示全部楼层
xiwuchen@qq 发表于 2014-12-24 10:27
问题解决了,加上上面两个注册表设置就行了。谢谢 xgr
我从另一个帖子上找到相关内容,也放在这里,供大 ...

朋友,写入注册表前要不要关闭CAD,打开CAD状态写入失败,关闭状态就可以。
发表于 2015-4-2 15:40 | 显示全部楼层
注册表和CAD状态没有关系,不过写入注册表后应该在下一次CAD启动才生效
发表于 2015-4-3 08:03 来自手机 | 显示全部楼层
sieben 发表于 2015-4-2 15:40
注册表和CAD状态没有关系,不过写入注册表后应该在下一次CAD启动才生效

写入 加载 启用 是三个不同过程,自动加载不一定是立即启用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-18 19:43 , Processed in 0.203979 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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