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

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

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


网友答: 过年大神都休息了

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

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

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

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

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

网友答: ;判断程序是否运行
;(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)
        )
    )
)

网友答: 变量标记啊
  • 上一篇:[LISP]2005新功能的編程-表格生成及格式設置vlisp版
  • 下一篇:没有了