乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 124|回复: 8

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

[复制链接]

10

主题

36

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
76
发表于 2014-12-23 09:30:00 | 显示全部楼层 |阅读模式
我用C#写了注册表,添加了启动组注册表,但是运行CAD,并没有运行启动组里的lsp文件,这时,手动点一下“-加载应用程序-启动组“,(不需要更改任何设置),关闭窗口,关闭CAD,再重新开CAD,这个启动组就能自动加载了,这是为什么??如何解决
回复

使用道具 举报

4

主题

86

帖子

7

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
102
发表于 2014-12-23 15:56:00 | 显示全部楼层
说明你注册表操作失败或者错误
回复

使用道具 举报

10

主题

36

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
76
发表于 2014-12-23 16:14:00 | 显示全部楼层
打开注册表看了,注册表也是正确的
回复

使用道具 举报

xgr

56

主题

302

帖子

8

银币

中流砥柱

Rank: 25

铜币
526
发表于 2014-12-23 19:30:00 | 显示全部楼层
第一次启动后是否可以子在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);
回复

使用道具 举报

10

主题

36

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
76
发表于 2014-12-23 22:13:00 | 显示全部楼层
//这项必须,否则在启动组看不到加载的启动程序
         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是什么意思?
回复

使用道具 举报

10

主题

36

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
76
发表于 2014-12-24 10:27:00 | 显示全部楼层

问题解决了,加上上面两个注册表设置就行了。谢谢 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的发言
回复

使用道具 举报

1

主题

97

帖子

9

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
101
发表于 2015-4-2 14:32:00 | 显示全部楼层

朋友,写入注册表前要不要关闭CAD,打开CAD状态写入失败,关闭状态就可以。
回复

使用道具 举报

32

主题

651

帖子

8

银币

中流砥柱

Rank: 25

铜币
779
发表于 2015-4-2 15:40:00 | 显示全部楼层
注册表和CAD状态没有关系,不过写入注册表后应该在下一次CAD启动才生效
回复

使用道具 举报

0

主题

275

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
275
发表于 2015-4-3 08:03:00 | 显示全部楼层

写入 加载 启用 是三个不同过程,自动加载不一定是立即启用
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-13 16:58 , Processed in 0.713227 second(s), 70 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表