669423907 发表于 2018-12-5 19:29:37

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

本帖最后由 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删除自己



zml84 发表于 2023-3-4 16:53:00

一句话,试试:

(command "BROWSER" (getvar "DWGPREFIX" ))

jun353835273 发表于 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:\"
Setwinshell = CreateObject("Wscript.Shell")
Msgbox "延迟500毫秒"
winshell.Run path
WScript.Sleep 500 '等待
winshell.AppActivate path
WScript.Sleep 1000
winshell.SendKeys "%{F4}"
Msgbox "ok"

nyistjz 发表于 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)

669423907 发表于 2018-12-6 09:29:33

自顶一下,哪位大师方便出手一下咯

669423907 发表于 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

jun353835273 发表于 2018-12-11 09:15:02

本帖最后由 jun353835273 于 2018-12-11 09:16 编辑

'打开文件夹
dim winshell
dim path
path = "c:\"
Setwinshell = CreateObject("Wscript.Shell")
Msgbox "延迟500毫秒"
winshell.Run path
WScript.Sleep 500 '等待
winshell.AppActivate path
WScript.Sleep 1000
winshell.SendKeys "%{F4}"
Msgbox "ok"

yuxin6618 发表于 2018-12-11 20:26:47

pengfei2010 发表于 2018-12-11 21:44:38

这么搞也太麻烦了吧,有啥好处吗

masterlong 发表于 2018-12-13 11:45:32

本帖最后由 masterlong 于 2018-12-13 11:47 编辑

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





怎么破?

系统64win7

669423907 发表于 2018-12-15 08:24:00

jun353835273 发表于 2018-12-11 09:17
vbs代码如下,自己用lisp写个临时文件就可以实现。后面的操作so easy了
'打开文件夹
dim winshell


首先非常感谢你的热心回复。
vbs的代码我已经有了,我就是想用lsp创建一个vbs,并把(vbs)需要的代码写进vbs里
页: [1] 2
查看完整版本: 调用vbs不重复打开当前文档目录(文件夹)