xinxirong 发表于 2016-4-19 09:36:50

有什么办法让死循环的DCL程序中断结束

有些第三方的vlx程序,用了对话框,程序又写得不好,点几下没响应了,图纸还没保存,自动保存的图没有改过的内容。
按esc键无法中断,有什么办法让它暂停或结束而不终止cad进程,或者至少让我保存一下。
能不能再开一个cad,打开vlisp编辑器来调试原来的进程呢?

love1030312 发表于 2016-4-19 22:44:48

既然是烂程序就不要用了呀你说用什么办法都是治标不治本   来个治根本的自己写一个好点的程序

llsheng_73 发表于 2016-4-19 23:14:31

本帖最后由 llsheng_73 于 2016-4-19 23:21 编辑

既然是vlx程序,那就是一般说来看不到代码,那怎么肯定说人家写得好不好?
别人写程序肯定首先以他自己的需求为出发点,处理些什么东东,怎么运行都是从对他自己最有利来考虑,你拿来一用,难免很多地方不如你的意,这很正常,因为它根本不就是针对你的问题写的。。。
程序运行后对话框一定时间内一直存在,对话框关不掉,点哪都没反应,这不一定是进入了死循环。。。
(我个人这样做过,在处理大师图形数据的过程中,不希望屏幕被人为缩放,我就先运行了一句(new_dialog ...)把对话框显示出来,但没运行(start_dialog),等数据处理完了再运行(done_dialog),这样程序看起来象死了一样,其实数据处理完了它会结束,当然,如果中间因为数据原因出错中断就彻底完了,只能强行关闭CAD,不然在vlide里边都没法返回正常)

不适用的东东不必要用,love1030312说得对,自己弄一个自己需要的

xinxirong 发表于 2016-4-20 08:52:41

llsheng_73 发表于 2016-4-19 23:14 static/image/common/back.gif
既然是vlx程序,那就是一般说来看不到代码,那怎么肯定说人家写得好不好?
别人写程序肯定首先以他自己的需 ...

你说得对,你说的这种情况我找到方法了:外部vlisp向原来的cad进程发送done_dialog命令就可以了。

还有一种情况是(while t)这种死循环,一定要用vl.lppreset(1)来终止求值。具体怎么实现还要试试才行。

xinxirong 发表于 2016-4-20 14:16:45

实验证明通过CreateRemoteThread单独调用lppreset单独执行是不行的。
测试在vlide来执行是可以的,但为什么会出现这个问题,还要深入研究

zhaohd2003 发表于 2016-4-26 11:25:25

按ctrl+break强制中断
页: [1]
查看完整版本: 有什么办法让死循环的DCL程序中断结束