Ahankhah 发表于 2022-7-6 09:34:21

通过AutoLISP关闭文件夹

各位成员好,
我在这里找到了Lee Mac的代码,用AutoLISP打开了一个文件夹。
代码如下:
(defun MT-Explore (Directory / Shell result)
   (setq Shell (vla-getInterfaceObject (vlax-get-acad-object)
                                       "Shell.Application"
               )
   )
   (setq result
            (vl-catch-all-apply 'vlax-invoke (list Shell 'Explore Directory))
   )
   (vlax-release-object Shell)
   (not (vl-catch-all-error-p result))
)
有人知道如何关闭打开的文件夹吗?

Lee Mac 发表于 2022-7-6 09:46:38

我唯一想到的是终止脚本,但如果终止错误的进程,这种方法是危险的,所以要小心。
 

(defun LM:Terminate ( process / wmi server query name )
(vl-catch-all-apply
   (function
   (lambda ( / name )
       (setq process (strcase process)
             wmi   (vlax-create-object "WbemScripting.SWbemLocator")
             server(vlax-invoke wmi 'connectserver nil nil nil nil nil nil nil nil)
             query   (vlax-invoke server 'execquery "Select * from Win32_Process")
       )
       (vlax-for item query
         (if
         (and
             (setq name (vlax-get item 'commandline))
             (vl-string-search process (strcase name))
         )
         (vlax-invoke item 'terminate)
         )
       )
   )
   )
)
(foreach object (list wmi server query)
   (if (and object (not (vlax-object-released-p object)))
   (vlax-release-object object)
   )
)
)
 
用进程名称调用以终止,例如:
 
(LM:Terminate "Excel.exe")

Organic 发表于 2022-7-6 10:02:46

但是,这是如何工作的,即据我所知,文件夹没有自己的进程,而是在资源管理器下。exe进程。终止该操作将关闭任务栏和所有其他文件夹功能,而不仅仅是一个文件夹。

Lee Mac 发表于 2022-7-6 10:13:19

说得好,丁克——那么我对这件事没有什么想法了

alanjt 发表于 2022-7-6 10:15:11

单击窗口右上角的小“X”或键入ALT+F4或CTRL+W有多难?

Lee Mac 发表于 2022-7-6 10:34:10

 
没错,但我确信同样的论点可以应用到我们编写代码的许多任务中——我相信你会同意,看看是否可以通过编程实现某些事情通常很有趣。
 
然而,在这种情况下,我怀疑会找到一种编程方法。
 

alanjt 发表于 2022-7-6 10:42:38

有点同意。
 
在这种情况下,我不明白这怎么可能。即使可以隔离活动的windows资源管理器窗口,如果打开了多个窗口,您将如何隔离特定的窗口。
页: [1]
查看完整版本: 通过AutoLISP关闭文件夹