明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4028|回复: 19

[提问] 请问,用什么代码打开文本文件时,不会夺取CAD窗口的焦点,不会盖住CAD窗口呢?

[复制链接]
发表于 2014-1-25 18:48 | 显示全部楼层 |阅读模式
5明经币
我使用下面代码时,碰到一个问题,“(startapp "notepad" "F:/0文本内容.txt")”可以打开文本文件,但我不喜欢的是,打开后,文本文件窗口取得了焦点,盖住了CAD窗口,我每次都得重新点一下后面的CAD窗口,才能返回CAD窗口。请问,用什么代码打开文本文件时,不会夺取CAD窗口的焦点,不会盖住CAD窗口呢?
(defun c:原内容后输入TEXT内容到接口TXT()         
          (setq fle "F:/0文本内容.txt")
          (setq ff(open fle "a"))         
          (while
                 (setq 组码表 (entget (car (ENTSEL "请选择单行文本:"))))
                        (IF (= (CDR (assoc 0 组码表)) "TEXT")            
                                (PROGN
                                        (setq 内容 (CDR (assoc 1 组码表)))
                                        (write-line(STRCAT "单行文字内容" "," (vl-princ-to-string 内容)) ff)
                                )
                        )
                      (startapp "notepad.exe" fle)
           )
           (close ff)  
)

发表于 2014-1-25 22:02 | 显示全部楼层
  1. (defun c:tt(/ fle ff en e1 str)         
  2.           (setq fle "d:/cccc.txt")
  3.           (setq ff(open fle "a"))         
  4.           (while (setq en(car (ENTSEL "请选择单行文本:")))
  5.             (setq e1(entget en))
  6.                         (IF (= (CDR (assoc 0 e1)) "TEXT")            
  7.                                 (PROGN
  8.                                         (setq str (CDR (assoc 1 e1)))
  9.                                         (write-line(STRCAT "单行文字内容" "," (vl-princ-to-string str)) ff)
  10.                                 )
  11.                         )                     
  12.            )
  13.   (close ff)
  14.   (startapp "notepad.exe" fle)           
  15. )

点评

我的打开文本文件是要放到前面的,是读一个字,打开一次  发表于 2014-1-26 08:12
回复

使用道具 举报

发表于 2014-1-26 06:36 | 显示全部楼层
DOS_LIB函数
(dos_execute "Notepad.exe  D:\\1.TXT" 3)

点评

dos 好象微软以后不支持了  发表于 2014-1-26 08:11
回复

使用道具 举报

发表于 2014-1-26 07:13 | 显示全部楼层
没太明白你的意思,说的是NOTEPAD窗体的位置和大小吧,这个和代码没啥关系吧....

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

发表于 2014-1-26 11:33 | 显示全部楼层
我理解这是“前台”、“后台”问题,不管怎样,调用一个不属于AutoCAD的应用程序,这个程序都应该占用前台才可能被看见,也就是在前台,此时AutoCAD被退到后台,在不退出前台程序时,要进入后台程序(后台转到前台),就必须要楼主所说的鼠标点击。
解决的办法是用CAD自己的东西,这个东西就是对话框,如果只是浏览,并且量很少,可以使用alert函数,否则就必须自己设置文本对话框,并且可以修改的对话框的管理是很麻烦的。
回复

使用道具 举报

发表于 2014-1-26 12:19 | 显示全部楼层
楼上的对CAD很了解啊

点评

才知道呀。元老是厉害的  发表于 2014-1-26 13:15
回复

使用道具 举报

发表于 2014-1-26 12:30 来自手机 | 显示全部楼层
打开文件在循环内,每选一个文字,得打开一次,那么会打开很多次,很多文件,而且必须手动关.建议参考楼上意见,写入文件后,再读取数据,在Dcl中的list_box中显示,或者edit_box也可。
回复

使用道具 举报

发表于 2014-1-26 12:56 | 显示全部楼层
去掉此行代码,或者换到你想看到他的时候的地方。如果你要看到它,它一般都会获取焦点。
  1. (startapp "notepad.exe" fle)
复制代码
回复

使用道具 举报

发表于 2014-1-26 13:12 | 显示全部楼层
本帖最后由 kwok 于 2014-1-26 14:09 编辑

折中方法
如果不是一直要打开notepad,可以试加一个批处理关掉notepad.
然后在lisp后加上(startapp "D:\\\\close.bat")

用记事本写上:
@echo off
ping /n 2 127.1>nul                    
taskkill /f /im notepad.exe
然后存成文件名为:colse.bat  
放在D盘下
回复

使用道具 举报

发表于 2014-1-26 13:13 | 显示全部楼层
不用tartapp,用其它方法打开,或者有办法
我打开用excel打开文本文件时,总是在后面。与你的情况相反,我希望在前面

点评

我输出到EXECL时,一般在输出过程中隐藏EXCEL,输出结束后再通过msxl-put-visable 让它显示出来  发表于 2014-12-17 23:21
VBA的打开方法是在后面的,这样好。LISP打开时在前面会造成屏幕闪烁。  发表于 2014-1-26 15:52
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 09:00 , Processed in 0.330846 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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