明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3302|回复: 16

[讨论] 调用vbs不重复打开当前文档目录(文件夹)

  [复制链接]
发表于 2018-12-5 19:29:37 | 显示全部楼层 |阅读模式
本帖最后由 669423907 于 2018-12-5 19:42 编辑










(defun c:13()
(ntb (getvar "dwgprefix")) ;获取当前文档所在目录并写入粘帖板
(vlax-invoke (vlax-create-object "wscript.shell")'run "打开文件夹.vbs") ;运行vbs
(princ))

;向剪粘帖板中写入文字
(defun ntb(STR / HTML RESULT)
(and (= (type STR) 'STR)
(setq HTML (vlax-create-object "htmlfile"))
(setq RESULT(vlax-invoke(vlax-get(vlax-get HTML 'PARENTWINDOW)'CLIPBOARDDATA)'SETDATA"Text"STR))
(vlax-release-object HTML))
(princ))

把“打开文件夹.vbs”放在搜索目录内即可
程序运行时,就会自动调用vbs打开当前文档目录,并且不会重复打开

随便请教一个如何用lsp创建vbs的问题:
如何在CAD的安装目录创建一个名为“打开文件夹.vbs”的vbs文件,
并在这个vbs里写下以下内容
'获取系统粘帖板内容http://www.ixueyi.com/jingyan/1895549.html
Set objHTML=CreateObject("xmlfile") 'xmlfile、mhtmlfile都可以
xmlfile=objHTML.ParentWindow.ClipboardData.GetData("text")
CreateObject("Wscript.Shell").Run xmlfile '打开文件夹
Wscript.Sleep 500 '等待
Wscript.CreateObject("Wscript.Shell").SendKeys "{F5}" '刷新
CreateObject("Wscript.Shell").Run "C:\Windows\system32\cmd.exe /c echo off|clip",0 '清空粘帖板,off为空,可以把off换成其它内容
CreateObject("Scripting.Filesystemobject").DeleteFile(WScript.ScriptFullName)'vbs删除自己



本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2023-3-4 16:53:00 | 显示全部楼层
一句话,试试:
  1. (command "BROWSER" (getvar "DWGPREFIX" ))
回复 支持 1 反对 0

使用道具 举报

发表于 2018-12-11 09:17:54 | 显示全部楼层
669423907 发表于 2018-12-8 16:51
首先非常感谢你的回复,代码很好用。
其实我还是非常想要生成vbs的方法,因为vbs可以做一些lsp不那么方 ...

vbs代码如下,自己用lisp写个临时文件就可以实现。后面的操作so easy了
'打开文件夹
dim winshell
dim path
path = "c:\"
Set  winshell = CreateObject("Wscript.Shell")
Msgbox "延迟500毫秒"
winshell.Run path
WScript.Sleep 500 '等待
winshell.AppActivate path
WScript.Sleep 1000
winshell.SendKeys "%{F4}"
Msgbox "ok"
发表于 2018-12-7 14:11:56 | 显示全部楼层
;;==============打开当前图形文件所在位置============
(defun C:Openthefile ()
       (princ "\n-->打开当前图形文件所在的文件夹!" )
       (setq winshell (vlax-create-object "Shell.Application" ))
       (setq filepath (getvar "DWGPREFIX" ))
       (vlax-invoke-method WinShell 'Open filepath)
);end defun
(princ)

评分

参与人数 1明经币 +1 收起 理由
669423907 + 1 很给力!

查看全部评分

 楼主| 发表于 2018-12-6 09:29:33 | 显示全部楼层
自顶一下,哪位大师方便出手一下咯
 楼主| 发表于 2018-12-8 16:51:55 | 显示全部楼层
nyistjz 发表于 2018-12-7 14:11
;;==============打开当前图形文件所在位置============
(defun C:Openthefile ()
       (princ "\n--> ...

首先非常感谢你的回复,代码很好用。
其实我还是非常想要生成vbs的方法,因为vbs可以做一些lsp不那么方便做的事情,
比方说可以延时执行且不会影响cad的操作,lsp的延时,就必须停下来等。
例子:
我lsp执行vbs,vbs打开文件夹A,1分钟后自动关闭文件夹A
发表于 2018-12-11 09:15:02 | 显示全部楼层
本帖最后由 jun353835273 于 2018-12-11 09:16 编辑
  1. '打开文件夹
  2. dim winshell
  3. dim path
  4. path = "c:"
  5. Set  winshell = CreateObject("Wscript.Shell")
  6. Msgbox "延迟500毫秒"
  7. winshell.Run path
  8. WScript.Sleep 500 '等待
  9. winshell.AppActivate path
  10. WScript.Sleep 1000
  11. winshell.SendKeys "%{F4}"
  12. Msgbox "ok"
复制代码
发表于 2018-12-11 21:44:38 | 显示全部楼层
这么搞也太麻烦了吧,有啥好处吗
发表于 2018-12-13 11:45:32 | 显示全部楼层
本帖最后由 masterlong 于 2018-12-13 11:47 编辑

楼主的方法确实可以不重复打开文件夹
很好
但是我这里打开文件夹以后
会连续弹出两次以下窗口
在网上搜了下vbs想自行解决
没能成功





怎么破?

系统64win7

本帖子中包含更多资源

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

x
 楼主| 发表于 2018-12-15 08:24:00 | 显示全部楼层
jun353835273 发表于 2018-12-11 09:17
vbs代码如下,自己用lisp写个临时文件就可以实现。后面的操作so easy了
'打开文件夹
dim winshell

首先非常感谢你的热心回复。
vbs的代码我已经有了,我就是想用lsp创建一个vbs,并把(vbs)需要的代码写进vbs里
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-16 18:51 , Processed in 0.188327 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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