龙龙仔 发表于 2003-11-29 12:44:00

[LISP]Create a windows shortcut


;;Create a windows shortcut
;;MODIFY BY 龙龙仔(LUCAS)
;;FIL = file name must have extension .lnk
;;CDIR = shortcut存于目录(目录不存在会出错)
;;TARGET = 执行档案
;;LST = DESCRIPTION
;;WDIR = WORKINGDIRECTORY
;;TAG = to overwrite it   T OR NIL
;;(F:WINDOWS_SHORTCUT"CDCHECK.LNK" "C:\\LSP" "C:\\Cdcheck\\CDCheck.exe" '("CDCHECK") "C:\\LSP" T)
(defun F:WINDOWS_SHORTCUT
       (FIL CDIR TARGET LST WDIR TAG / WSH LNK RET COMMENT)
(setq FIL (strcat CDIR "\\" FIL))
(if (or (and (findfile FIL) TAG) (not (findfile FIL))) ;or
    (progn (setq WSH (vlax-create-object "Wscript.Shell")
               LNK (vlax-invoke-method WSH 'CREATESHORTCUT FIL)
           )                                ;setq
           (if (not (setq COMMENT (car LST)))
             (setq COMMENT "")
           )
           (if (and (F:VLERR 'vlax-put-property
                             (list WSH 'CURRENTDIRECTORY CDIR)
                             NIL
                  )
                  (F:VLERR 'vlax-put-property
                             (list LNK 'TARGETPATH TARGET)
                             NIL
                  )
                  (F:VLERR 'vlax-put-property
                             (list LNK 'DESCRIPTION COMMENT)
                             NIL
                  )
                  (F:VLERR 'vlax-put-property
                             (list LNK 'WORKINGDIRECTORY WDIR)
                             NIL
                  )

                  (F:VLERR 'vlax-invoke-method (list LNK 'SAVE) NIL)
             )                        ;and
             (progn (mapcar 'vlax-release-object (list WSH LNK))
                  (setq RET t)
             )                                ;progn
           )                                ;if
    )                                        ;progn
)                                        ;if
RET
)
;;return the target path of a windows shortcut file (.lnk)
;;(F:GET_WINDOWS_SHORTCUT_PROPERTIES "cdcheck.lnk")
(defun F:GET_WINDOWS_SHORTCUT_PROPERTIES (FIL / WSH LNK PTH COM)
(if (setq FIL (findfile FIL))
    (progn (setq WSH (vlax-create-object "Wscript.Shell")
               LNK (vlax-invoke-method WSH 'CREATESHORTCUT FIL)
               PTH (vlax-get-property LNK 'TARGETPATH)
               COM (vlax-get-property LNK 'DESCRIPTION)
           )                                ;setq
           (mapcar 'vlax-release-object (list WSH LNK))
    )
)
(if PTH
    (list PTH COM)
    NIL
)
)

;;simplified error catching routine for vl-catch*
;;usage (setq en (f:vlerr 'vla-get-Area (list en) nil))
;;tag = true for debugging: princes error message
(defun F:VLERR (FUN LST TAG / RET)
(if (vl-catch-all-error-p
        (setq RET (vl-catch-all-apply FUN LST))
      )
    (if        TAG
      (progn (princ (vl-catch-all-error-message RET)) NIL)
      NIL
    )
    (if        (not RET)
      (setq RET t)
      RET
    )
)
)

flowerson 发表于 2004-5-15 21:37:00

这个程序是作用是什么?给我们这些入门者指点指点.

yjrun 发表于 2004-7-28 08:59:00

没有看懂

cqnj023 发表于 2004-7-29 22:09:00

构建windows下的快捷方式的的

citykunan 发表于 2004-7-30 11:41:00

班主真是高手啊。
页: [1]
查看完整版本: [LISP]Create a windows shortcut