dakui 发表于 2025-1-25 13:27:44

如何利用LISP 判断某个APP是否启动

本帖最后由 dakui 于 2025-1-25 13:48 编辑

简单描述一下
我把某个APP启动代码加载到 menu.mnl文件内
(startapp "C:\\_menu\\Bin\\RUN.exe")
导致每开启一个新的CAD,就会再次被执行,导致 RUN.exe 多次开启

有没有办法通过LISP做个判断条件,如果 RUN.exe 启动中,则提示启动中,反之 启动 RUN.exe

dakui 发表于 2025-1-25 16:17:58

过年大神都休息了:'(

ssyfeng 发表于 2025-1-25 17:55:35

通过调用windows的API函数查看进程里有没有这个程序,论坛有这方面知识,自己搜索一下慢慢研究

dakui 发表于 2025-1-25 18:43:01

嘿嘿,正在研究
打算通过VBS或者BAT 来识别APP是否启动
然后再传给LISP
需要走一点点的弯路

夏生生 发表于 2025-1-26 09:20:00

用setenv和getenv,或者vl-registry-write和vl-registry-read干点事儿,启动的时候get或read,没读到,启动程序,set或write

自贡黄明儒 发表于 2025-1-26 16:11:14

如果运行RUN.exe后,有某个函数,问题就简单了。判断这个函数存在与否就行了

kozmosovia 发表于 2025-1-26 23:11:32

最简单是程序里加全局变量。也可以用WMI遍历进程来确定RUN.EXE是否存在

aihuyujian 发表于 2025-2-10 16:26:28

;判断程序是否运行
;(LM:win32process_p "notepad.exe")
;; Win32 Process-p-Lee Mac
;; Returns T if a process exists with the supplied name
(defun LM:win32process_p ( pro / qry rtn srv wmi )
    (if (setq wmi (vlax-create-object "wbemscripting.swbemlocator"))
      (progn
            (setq rtn
                (vl-catch-all-apply
                   '(lambda ( )
                        (setq srv (vlax-invoke wmi 'connectserver)
                              qry (vlax-invoke srv 'execquery (strcat "select * from win32_process where name = '" pro "'"))
                        )
                        (< 0 (vla-get-count qry))
                  )
                )
            )
            (foreach obj (list qry srv wmi)
                (if (= 'vla-object (type obj)) (vlax-release-object obj))
            )
            (and (not (vl-catch-all-error-p rtn)) rtn)
      )
    )
)
页: [1]
查看完整版本: 如何利用LISP 判断某个APP是否启动