明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2280|回复: 9

大家谁知道如何判断应用程序是否加载?

[复制链接]
发表于 2003-7-29 09:57:00 | 显示全部楼层 |阅读模式
我近期编的一个程序,要加载doslid,我在单位用的是AutoCAD2000英文版,重复加载这个应用程序,没有任何问题,在家里,我用的是AutoCAD2000中文版,这样就不行了,重复加载时,出现错误,程序终止。能不能有什么办法判断某个应用程序是否加载,如是,就不再加载它了。
   当然是用lisp判断,而不是在加载应用程序对话框里。
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2003-7-29 10:18:00 | 显示全部楼层

回复

用(arx)函数可以得到已经加载的arx程序名字符串表.
 楼主| 发表于 2003-7-29 10:33:00 | 显示全部楼层
OK!Thanks!
发表于 2003-7-30 14:32:00 | 显示全部楼层
用lisp
可用(setq a (null 程序名))
如果 a 为 nil 则已经加载
如果 a 不为nil 则未加载!
发表于 2003-7-30 14:40:00 | 显示全部楼层

good method

挺好的方法.
 楼主| 发表于 2003-7-30 14:49:00 | 显示全部楼层
无法判断!加载与否,都是 nil  !
发表于 2003-7-31 08:48:00 | 显示全部楼层
xazhji发表于2003-7-30 14:49:00无法判断!加载与否,都是 nil  !



可以判断,
你想想,如果一个函数未加载,那么此函数名符号肯定为空,(null 函数)肯定为T,怎么可能都是nil.
不过只需判断其是否空即可,无须通过NULL付值给a,
(if abc
  (princ "程序已加载")
  (princ "程序未加载")
)
 楼主| 发表于 2003-7-31 09:31:00 | 显示全部楼层
我先前是将程序名用双引号括起来,这个当然不对,lisp 将它作为字符串,当然,是nil;    我刚才将双引号去掉,现在,不管加载与否,都是T。想毕是因为程序名称同它的函数名称不一样的缘故罢了。比如,判断加载doslib2k.arx ,我想,应该判断其中的某个函数名称。
发表于 2003-7-31 09:48:00 | 显示全部楼层
根据AutoCAD的版本,确定DOSLIB的版本doslib***
(member "doslib***.arx" (arx))
发表于 2003-9-15 22:45:00 | 显示全部楼层
将下面的添加到acad.lsp中就可以了

(defun S::STARTUP ()
(cond
((= (atoi (substr (getvar "acadver") 1 2)) 14)
(if (not (member "doslib14.arx" (arx)))
(if (findfile "doslib14.arx")
(arxload "doslib14")
)
)
)
((= (atoi (substr (getvar "acadver") 1 2)) 15)
(if (not (member "doslib2k.arx" (arx)))
(if (findfile "doslib2k.arx")
(arxload "doslib2k")
)
)
)
)
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-26 22:27 , Processed in 0.168874 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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