找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1524|回复: 15

[已解决] opendcl中关于调用外部应用程序的问题

[复制链接]

已领礼包: 202个

财富等级: 日进斗金

发表于 2020-7-23 08:33:03 | 显示全部楼层 |阅读模式
悬赏20D豆已解决
本帖最后由 dyjwyqz5221 于 2020-7-23 11:19 编辑

(defun c:tt(/ ab)
        (setq ab
                '("YWt6A2wKAABUWILgBuKjKzUVLT9qgBCt2h0E6y4uajp8Exdp+EAQpUon91EuJdUoz/zlBiVLSDM7"
"LXOjxmsK02UB/DGO+zUpxA2XvGFeFgtZnN2PsppPiQA4ZS5u4rWiskmZ5U2ZABmYWi8n096oqWM9"
"b1ua22lO+Sdyv3+O1H32lf8uBAJyXP1PcnW/bTR0FweYGlD7byeetUb7LUxAE5hC57V3ESrEWY0d"
"jKhAsuhrkw8oxmeX4A5KSVsyIRj48jnDsd7yDExkaeJMpk1F2Pvnb+pITW/GRLYwlshrtD9lFDPI"
"95C7XFAeP6LUkfarcvBwPaNcAveOTJ90n0n6UfmOSGEngtKSfhI6o+ZshUCXB720d1XxGx/U5ZqF"
"RJ/mbbghtyBY0vaBfCML6xQM110W0TEXP6trjR2kJTfnBPBWfDMLJwU8OFSc+qlBzwi9ATqGT5/5"
"+sEvQqPBMpK17nvUoQSU6e9l6b94fc0CQKr6VgAvqqFXkLSkJ20bpN5kL3sqh9wrF8nU5lbZ0oPC"
"uCf1yRbC4GztyCEXgjlXL4m3gP4qxzmAkGzAPYZIn0aHnVJpPQzH7eY4LIQnR9p7B+ymU5FNLplk"
"ALKJ1Du8dXNj4jEkyQfMaXZBzcTTFgCeyiOriGVqiWDG38bxrQkQcuIoE0EajxgDBEmrVDYDg0sk"
"QTIHZt+DMW6BzovBPaVtGok2me1fBZGkux1+AgrVmxokxlu9jc9aCEs079Ek2zOaYTaH6zi41e/A"
"3aWLrxisjqHdXfoFFgMRPhcTQRaPGfNxrsPhXkI3BkGfchv81T9hp32rn8sKSdwheBCZlK4HKrpS"
"ZffpmiNsL/VTqvY+c2apRqjsLcCHEJY6issMXOQF0OD1I5ixu7nCJ4fFxByOgSQpfAta91gLGtNE"
"vwv/kYdBwiMxb8AjTYZ1yXWwYaNQowB+Zb0xzA==")
        );;;setq
        (defun c:Untitled1/Form1#OnInitialize (/ lst)
                (setq lst (xdrx-string-sort (xdrx-file-dir "d:\\审查意见汇总\\*.txt") -1))
                (dcl-Control-SetList Untitled1/Form1/ListBox1 lst)
                (dcl-ListBox-SetCurSel Untitled1/Form1/ListBox1 0);;;默认第一个选项
        );;;defun
        (defun c:Untitled1/Form1/TextButton1#OnClicked (/)
                (startapp "explorer.exe" "d:\\审查意见汇总")
                (setq lst (xdrx-string-sort (xdrx-file-dir "d:\\审查意见汇总\\*.txt") -1))
                (dcl-Control-SetList Untitled1/Form1/ListBox1 lst)
                (dcl-ListBox-SetCurSel Untitled1/Form1/ListBox1 0);;;默认第一个选项

        );;;defun
        (dcl-Project-import ab)
          (dcl-Form-Show Untitled1/Form1)
         (princ)
);;;defun

这是一段简单的调用外部程序的lsp程序,点击TextButton1时调用
怎么样使(setq lst (xdrx-string-sort (xdrx-file-dir "d:\\审查意见汇总\\*.txt") -1))
                (dcl-Control-SetList Untitled1/Form1/ListBox1 lst)
                (dcl-ListBox-SetCurSel Untitled1/Form1/ListBox1 0);;;默认第一个选项
在"explorer.exe"关闭后才运行呢?

也就是点击TextButton1,启动外部应用程序"explorer.exe",新建txt文档后关闭"explorer.exe",
然后才更新ListBox1内容。
目前是:
      红色部分内容在"explorer.exe"未完成之前就运行了,
也就是,在再次点击TextButton1时,更新上次增加的txt文档到ListBox1

注:非模态对话框,同步



00000.png

Untitled1.odcl

573 Bytes, 下载次数: 10, 下载积分: D豆 -1 , 活跃度 1

最佳答案

查看完整内容

为什么非要等?你要是想等,那CAD就什么也不做了 你可以写个循环,加上延时两个条件,通过判断进程是否关闭,在接着做
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 40个

财富等级: 招财进宝

发表于 2020-7-23 08:33:04 | 显示全部楼层
为什么非要等?你要是想等,那CAD就什么也不做了
你可以写个循环,加上延时两个条件,通过判断进程是否关闭,在接着做
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2020-7-23 13:19:51 | 显示全部楼层
判断进程是否正在进行

命令: (XD::SYSTEM:WMI-QUERY "Win32_Process"  "caption" "caption like '%notepad.exe%'")
("notepad.exe" "notepad.exe" "notepad.exe")

点评

两个问题: 1、需要在外部应用程序"explorer.exe d:\\审查意见汇总"关闭后,更新listbox1中的txt文档名称。 调用(XD::System:Run-Wait "explorer.exe d:\\审查意见汇总")后也不更新,只有在再次点击按钮时,才更新  详情 回复 发表于 2020-7-23 14:43
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2020-7-23 13:26:41 | 显示全部楼层
本帖最后由 marting 于 2020-7-23 13:33 编辑

XD::System:Run-Wait)运行外部命令并且等待完成
1 个回复 - 53 次查看
(XD::System:Run-Wait "notepad.exe d:\\1.txt")
2017-7-21 11:15 - Lispboy - 开源函数库

(XD::System:Run-Wait "notepad.exe d:\\1.txt")
这个函数,只有你运行关闭NOTEPAD后,CAD才会继续操作
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 202个

财富等级: 日进斗金

 楼主| 发表于 2020-7-23 14:43:42 | 显示全部楼层
marting 发表于 2020-7-23 13:19
判断进程是否正在进行

命令: (XD::SYSTEM:WMI-QUERY "Win32_Process"  "caption" "caption like '%notep ...

两个问题:
1、需要在外部应用程序"explorer.exe d:\\审查意见汇总"关闭后,更新listbox1中的txt文档名称。
调用(XD::System:Run-Wait "explorer.exe d:\\审查意见汇总")后也不更新,只有在再次点击按钮时,才更新。
不用"notepad"是因为不知道新增的txt文档到底是什么名字。
2、(XD::SYSTEM:WMI-QUERY "Win32_Process"  "caption" "caption like '%explorer.exe%'")判断进程时,也出现了多个结果,("explorer.exe" "explorer.exe"),桌面虽然不显示有explorer.exe程序在运行,查看进程里面确实有两个"explorer.exe"在运行。那就无法判断"explorer.exe d:\\审查意见汇总"是否已经结束了。

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2020-7-23 14:52:49 | 显示全部楼层
你不是在对话框里面的文件名去打开notepad吗?那你就知道名字了,回来后,程序去读然后写
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 202个

财富等级: 日进斗金

 楼主| 发表于 2020-7-23 15:53:29 | 显示全部楼层
不是,是启动外部程序 (startapp "explorer.exe" "d:\\审查意见汇总"),然后在这个子目录下新建或删除txt文档,然后再更新listbox1表里面的txt文档名。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 202个

财富等级: 日进斗金

 楼主| 发表于 2020-7-23 16:01:52 | 显示全部楼层
(defun c:Untitled1/Form1/TextButton1#OnClicked (/ n1 n2)
                (XD::System:Run-Wait "explorer.exe d:\\审查意见汇总")
                (setq lst (xdrx-string-sort (xdrx-file-dir "d:\\审查意见汇总\\*.txt") -1))
                (dcl-Control-SetList Untitled1/Form1/ListBox1 lst)
                (dcl-ListBox-SetCurSel Untitled1/Form1/ListBox1 0);;;默认第一个选项
);;;defun
修改成这样后,后面的还是继续运行。不会等待的
再者说了,点击外部程序"explorer.exe"右上角的关闭x后,外部程序根本没关闭,在进程中继续运行。

点评

程序是顺序结构,代码在寄存器里面一行接着一行做,你代码不做控制,肯定不会停的, 你只能自己加个循环结构,判断,达到你要的条件了,结束循环。 另外,你这样的逻辑,打开NOTEPAD后,就要一直做在那边工作吗?  详情 回复 发表于 2020-7-23 16:21
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 202个

财富等级: 日进斗金

 楼主| 发表于 2020-7-23 16:05:32 | 显示全部楼层
是一个同事非得要用这个办法增加或删除txt文档,如果没办法,我就在odcl里面增加个txt文档名的输入框就解决了。其他办法还是很多的。就是想试试外部应用程序进程的问题。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2020-7-23 16:21:38 | 显示全部楼层
dyjwyqz5221 发表于 2020-7-23 16:01
(defun c:Untitled1/Form1/TextButton1#OnClicked (/ n1 n2)
                (XD::System:Run-Wait "explorer.exe d:\\ ...

程序是顺序结构,代码在寄存器里面一行接着一行做,你代码不做控制,肯定不会停的,
你只能自己加个循环结构,判断,达到你要的条件了,结束循环。

另外,你这样的逻辑,打开NOTEPAD后,就要一直做在那边工作吗? CAD这边要求什么也不让做了? 这不符合人的工作。特别还是非模式对话框。

点评

关键就是结束的条件怎么确定的问题,向用外部程序"explorer.exe"结束为条件吧,结果进程里面又好几个,明明点击了"explorer.exe"右上角的“x”,关闭了,进程里还是有。也无法确定是不是"explorer.exe d:\\审查意见  详情 回复 发表于 2020-7-23 17:20
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 202个

财富等级: 日进斗金

 楼主| 发表于 2020-7-23 17:20:21 | 显示全部楼层
XDSoft 发表于 2020-7-23 16:21
程序是顺序结构,代码在寄存器里面一行接着一行做,你代码不做控制,肯定不会停的,
你只能自己加个循环 ...

关键就是结束的条件怎么确定的问题,向用外部程序"explorer.exe"结束为条件吧,结果进程里面又好几个,明明点击了"explorer.exe"右上角的“x”,关闭了,进程里还是有。也无法确定是不是"explorer.exe d:\\审查意见汇总"进程是否已关闭,所以就非常困难了。
写了一个循环,结果cad卡死了

点评

[attachimg]101765[/attachimg]  详情 回复 发表于 2020-7-23 17:41
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2020-7-23 17:41:39 | 显示全部楼层
dyjwyqz5221 发表于 2020-7-23 17:20
关键就是结束的条件怎么确定的问题,向用外部程序"explorer.exe"结束为条件吧,结果进程里面又好几个,明 ...

搜狗截图20200723174025.jpg
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 202个

财富等级: 日进斗金

 楼主| 发表于 2020-7-24 10:06:24 | 显示全部楼层
本帖最后由 dyjwyqz5221 于 2020-7-24 10:38 编辑

测试了下:
下面这个没问题,"notepad.exe d:\\审查意见汇总\\1-结构说明.txt"文档关闭后才运行后面的语句

(defun c:Untitled1/Form1/TextButton1#OnClicked (/ n1 n2)
        (startapp "explorer.exe" "d:\\审查意见汇总")
        (XD::System:Run-Wait "notepad.exe d:\\审查意见汇总\\1-结构说明.txt")
        (setq lst (xdrx-string-sort (xdrx-file-dir "d:\\审查意见汇总\\*.txt") -1));;;取出txt文档名并进行逻辑排序
        (dcl-Control-SetList Untitled1/Form1/ListBox1 lst)
        (dcl-ListBox-SetCurSel Untitled1/Form1/ListBox1 0);;;默认第一个选项
);;;defun


下面这个有问题,无法判断"explorer.exe d:\\审查意见汇总"是否已经关闭
(defun c:Untitled1/Form1/TextButton1#OnClicked (/ n1 n2)
        (XD::System:Run-Wait "explorer.exe d:\\审查意见汇总")
        (setq lst (xdrx-string-sort (xdrx-file-dir "d:\\审查意见汇总\\*.txt") -1));;;取出txt文档名并进行逻辑排序
        (dcl-Control-SetList Untitled1/Form1/ListBox1 lst)
        (dcl-ListBox-SetCurSel Untitled1/Form1/ListBox1 0);;;默认第一个选项
);;;defun



论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 202个

财富等级: 日进斗金

 楼主| 发表于 2020-7-24 10:12:49 | 显示全部楼层
按下TextButton1时,要实现的功能为:在"d:\\审查意见汇总"目录下建立新的txt文档或删除原有的txt文档,并将该目录下的txt文档名称更新到lstbox1中。

点评

你最后是怎么解决的?总结下,结下帖吧。  详情 回复 发表于 2020-7-28 20:16
下载2020.07.27日更新的API 命令: (xdrx-process-find "notepad.exe") (("XDSoft.mnu - 记事本" 2504) ("1.txt - 记事本" 20128) ("解压密码.txt - 记事本" 9456)) 命令: (xdrx-process-find "notepad.exe" "  详情 回复 发表于 2020-7-28 20:14
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2020-7-28 20:14:59 | 显示全部楼层
dyjwyqz5221 发表于 2020-7-24 10:12
按下TextButton1时,要实现的功能为:在"d:\\审查意见汇总"目录下建立新的txt文档或删除原有的txt文档,并 ...

下载2020.07.27日更新的API

命令: (xdrx-process-find "notepad.exe")
(("XDSoft.mnu - 记事本" 2504) ("1.txt - 记事本" 20128) ("解压密码.txt - 记事本" 9456))

命令: (xdrx-process-find "notepad.exe" "1.txt")
(("1.txt" 20128))

命令: (xdrx-process-find "notepad.exe" ".*mnu")
(("XDSoft.mnu" 2504))
返回同执行文件名进程的信息


第一个值是 窗口的标题,第二个值是进程ID
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-23 20:06 , Processed in 0.378718 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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