找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2196|回复: 9

[他山之石] 选择目录及多选文件

[复制链接]

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-3-21 08:26:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
存档
在 Windows 7 32bit 上测试通过
  1. ;;; 本代码仅提供作为应用上的参考, 而未声明或隐含任何保证; 对于任何特殊
  2. ;; 用途之适应性, 以及商业销售所隐含作出的保证, 在此一概予以否认.
  3. ;; ==================================================================
  4. ; 作者:秋枫,参考了灯火的VBA程序
  5. ;; 用法:(qf_getFolder msg)
  6. ;; 例子:(qf_getFolder "选择文件夹:")
  7. ;; 返回值:字符串,文件夹路径,如果点了cancel, 返回nil
  8. (defun qf_getFolder (msg / WinShell shFolder path catchit)
  9.   (vl-load-com)
  10.   (setq winshell (vlax-create-object "Shell.Application"))
  11.   (setq shFolder (vlax-invoke-method WinShell 'BrowseForFolder 0 msg 1))
  12.   (setq
  13.     catchit (vl-catch-all-apply
  14.               '(lambda ()
  15.                  (setq shFolder (vlax-get-property shFolder 'self))
  16.                  (setq path (vlax-get-property shFolder 'path))
  17.                )
  18.             )
  19.   )
  20.   (if (vl-catch-all-error-p catchit)
  21.     nil
  22.     path
  23.   )
  24. )
  25. ;; (xdl-getfiles) 选取多个文件,返回目录文件列表
  26. ;;title ---  标题
  27. ;;initdir --- 初始目录
  28. ;;filter --- 文件过滤 "*.dwg|*.dwg"
  29. (defun xdl-getfiles (title     initdir         filters           /             maxfs
  30.                      flags     diatl         wincomdlg filem     fstr->lst
  31.                     )
  32.   (defun fstr->lst (fm / n ff)
  33.     (setq ff nil)
  34.     (if        (vl-string-position (ascii "\000") fm)
  35.       (progn
  36.         (while (vl-string-position (ascii "\000") fm)
  37.           (setq n (vl-string-position (ascii "\000") fm))
  38.           (setq ff (append ff (list (substr fm 1 n))))
  39.           (setq fm (substr fm (+ n 2) (- (strlen fm) n 1)))
  40.         )
  41.         (setq ff (append ff (list fm)))
  42.       )
  43.       (progn
  44.         (setq ff (vl-filename-directory fm))
  45.         (setq ff (list ff (vl-string-subst "" ff fm)))
  46.       )
  47.     )
  48.   )
  49.   (if (= initdir "")
  50.     (setq initdir (getvar "dwgprefix"))
  51.   )
  52.   (if
  53.     (/=
  54.       (vl-registry-read
  55.         "HKEY_CLASSES_ROOT\\Licenses\\4D553650-6ABE-11CF-8ADB-00AA00C00905"
  56.       )
  57.       "gfjmrfkfifkmkfffrlmmgmhmnlulkmfmqkqj"
  58.     )
  59.      (progn
  60.        (princ
  61.          "\n第一次运行需要注册控件,程序自动注册,请重新启动系统"
  62.        )
  63.        (VL-REGISTRY-WRITE
  64.          "HKEY_CLASSES_ROOT\\Licenses\\4D553650-6ABE-11CF-8ADB-00AA00C00905"
  65.          ""
  66.          "gfjmrfkfifkmkfffrlmmgmhmnlulkmfmqkqj"
  67.        )
  68.        (startapp
  69.          "Regsvr32"
  70.          (strcat " /s " (getenv "Windir") "\\System32\\comdlg32.ocx")
  71.        )
  72.        (exit)
  73.      )
  74.      (progn
  75.        (setq wincomdlg (vlax-create-object "mscomdlg.commondialog"))
  76.        (vlax-put-property wincomdlg 'CancelError 0)
  77.        (vlax-put-property wincomdlg 'MAXFILESIZE 32767)
  78.        (vlax-put-property
  79.          wincomdlg
  80.          'FLAGS
  81.          (+ 4 512 524288 1048576 1024)
  82.        )
  83.        (vlax-put-property
  84.          wincomdlg
  85.          'DIALOGTITLE
  86.          ;;"请选择要修改的DWG文件"
  87.          title
  88.        )
  89.        (vlax-put-property wincomdlg 'filter filters);_
  90.        (vlax-put-property wincomdlg 'initdir initdir)
  91.        (vlax-invoke-method wincomdlg 'showopen)
  92.        (setq filem (vlax-get wincomdlg 'filename))
  93.        (vlax-release-object wincomdlg)
  94.        (if (/= filem "")
  95.          (mapcar '(lambda (x) (vl-string-left-trim "\\" x))
  96.                  (fstr->lst filem)
  97.          )
  98.        )
  99.      )
  100.   )
  101. )

本帖被以下淘专辑推荐:

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 8611个

财富等级: 富甲天下

发表于 2014-3-21 08:54:30 | 显示全部楼层
64位怎么办?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-3-21 09:01:14 | 显示全部楼层

你试过了吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8611个

财富等级: 富甲天下

发表于 2014-3-21 09:17:30 | 显示全部楼层
没试,单位电脑是xp
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-3-21 16:20:50 | 显示全部楼层
64位第一个可用, 第二个不可用
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3198个

财富等级: 富可敌国

发表于 2014-3-21 17:17:49 | 显示全部楼层
弱弱的问一句,st788796就是传说中的秋枫大侠吗?另外主题上的“他山之石”是什么意思?

点评

St788796就是st788796,后起之秀,进步神速主要是功底深厚  详情 回复 发表于 2014-3-21 19:39
其实我也想知道st788796 是谁 但他发贴用他山之石 意思就是 不是自己的作品 反过来..... st788796 不是秋枫大侠 纯猜测  详情 回复 发表于 2014-3-21 18:57
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

发表于 2014-3-21 18:57:50 | 显示全部楼层
lucas3 发表于 2014-3-21 17:17
弱弱的问一句,st788796就是传说中的秋枫大侠吗?另外主题上的“他山之石”是什么意思?

其实我也想知道st788796 是谁
但他发贴用
他山之石   意思就是    不是自己的作品
反过来.....    st788796   不是秋枫大侠


纯猜测
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

发表于 2014-3-21 19:36:44 来自手机 | 显示全部楼层
他山之石,后面是什么来着?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

发表于 2014-3-21 19:39:50 来自手机 | 显示全部楼层
lucas3 发表于 2014-3-21 17:17
弱弱的问一句,st788796就是传说中的秋枫大侠吗?另外主题上的“他山之石”是什么意思?

St788796就是st788796,后起之秀,进步神速主要是功底深厚

点评

在晓东混了一年多了... 目测st788796略胜你一点点 不过黄大师也是很厉害的角色(人品和技术也相当地好) 黄大师尤其对PL线的处理技术相当厉害 VL系列函数用得非常厉害  详情 回复 发表于 2014-3-21 23:28
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

发表于 2014-3-21 23:28:37 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2014-3-21 19:39
St788796就是st788796,后起之秀,进步神速主要是功底深厚

在晓东混了一年多了...
目测st788796略胜你一点点
不过黄大师也是很厉害的角色(人品和技术也相当地好)


黄大师尤其对PL线的处理技术相当厉害
VL系列函数用得非常厉害


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-20 02:57 , Processed in 0.463500 second(s), 53 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表