找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 8154|回复: 29

[VLISP程序]:利用Windows对话框一次获取多个文件

[复制链接]

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-9-20 00:36:56 | 显示全部楼层 |阅读模式

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

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

×

  1. ;;test OK with XP
  2. (defun xd-getfiles (/ x erg)
  3.   (if (setq x (vlax-create-object "MSComDlg.CommonDialog"))
  4.     (progn (vlax-put-property x "DialogTitle" "选择图形文件")
  5.            (vlax-put-property x "Filename" "*.dwg")
  6.            (vlax-put-property x "Filter" "*.dwg")
  7.            (vlax-put-property x "MaxFileSize" 10000)
  8.            ;; in lisp unbedingt notwendig, sonst kommt ne fehlermeldung von wegen zu wenig speicher
  9.            (vlax-put-property x "Flags" 512) ;_ mehrer Dateien+explorer-design
  10.            (vlax-put-property x "Action" 1) ;_ showopen-dialog  
  11.            (setq erg (vlax-get-property x "Filename"))
  12.     )
  13.   )
  14.   (if (/= erg "*.dwg")
  15.     erg
  16.     nil
  17.   )
  18. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 12个

财富等级: 恭喜发财

发表于 2005-10-4 17:36:39 | 显示全部楼层
(setq x (vlax-create-object "MSComDlg.CommonDialog") 返回的值为nil啊。

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

使用道具 举报

发表于 2005-10-5 15:24:36 | 显示全部楼层
eachy 兄弟看如何解决呀?这个很实用的东西我需急用!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-10-5 17:52:22 | 显示全部楼层
楼上的:Eachy的代码可能需要手动注册一下那个ocx组件。RegSvr32 c:\xxx\comdlg32.ocx

下面的这个代码也可以试试:

  1. [font=courier new]
  2. ;; 秋枫,Windows XP下测试通过
  3. (defun qf-winxp-getfiles (/ x r)
  4.   (vl-load-com)
  5.   (if (setq x (vlax-create-object "UserAccounts.CommonDialog"))
  6.     (progn (vlax-put-property x 'Filter "Drawing Files|*.dwg|All Files|*.*")
  7.            (vlax-put-property x 'FilterIndex 1)
  8.            (vlax-put-property x 'Flags 512) ; 设置多选文件选项, 如不需要则删除此行
  9.            (vlax-put-property x 'InitialDir "c:\")
  10.            (setq r (vlax-invoke-method x 'ShowOpen))
  11.            (if (= 0 r) nil (vlax-get-property x 'FileName))
  12.     )
  13.     nil
  14.   )
  15. )
  16. [/font]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

 楼主| 发表于 2005-10-6 00:04:31 | 显示全部楼层
MS Common Dialog: oCommmonDialog = CreateObject("MSComDlg.CommonDialog") && !!! You can't directly create this object without a development licence, so for dynamically doing it on another machine,



# re: How to use a windows dialog in your webpage  
posted at Wednesday, December 03, 2003 8:05 AM by Michael Harris
'MSComDlg.CommonDialog' is a licensed control. It works from client side IE hosted script only if a Microsoft dev tool (like VStudio) is installed on the client to provide a design time license.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-10-6 05:41:48 | 显示全部楼层
合并一下:)

  1. ;; for Windows XP / winnt2k
  2. ;; (xdl-getfiles) 选取多个文件,返回目录文件列表 (可惜是8字短文件名).
  3. (defun xdl-getfiles (/ x r y)
  4.   (vl-load-com)
  5.   (if (or (setq x (vlax-create-object "UserAccounts.CommonDialog"))
  6.           (setq y (vlax-create-object "MSComDlg.CommonDialog") x y))
  7.     (progn (vlax-put-property x 'Filter
  8.              "cad文件|*.dwg;*.dxf
  9.              |cad二次开发|*.lsp;*.fas;*.vbs;*.vlx;*.arx
  10.              |图片|*.jpg;*.gif;*.bmp;*.tga;*.ttf
  11.              |动画及影像|*.swf;*.gif;*.mov;*.dat;*.mpg
  12.              |All Files|*.*")
  13.            ;(vlax-put-property x 'FilterIndex 1)
  14.            (if y (vlax-put-property x "MaxFileSize" 10000))
  15.            (vlax-put-property x 'Flags 512) ; 设置多选文件选项, 如不需要则删除此行
  16.            ;(vlax-put-property x 'InitialDir "c:\")
  17.            (setq r (vlax-invoke-method x 'ShowOpen))
  18.            (if (= 0 r) nil (vlax-get-property x 'FileName))
  19.     )
  20.   )
  21. )



我在xp和win2000下都可以运行,不知道其他人怎么样。
win2000下用eachy提供的代码原先就可以运行。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-10-6 12:43:16 | 显示全部楼层
4楼的兄弟,手动注册RegSvr32 c:\xxx\comdlg32.ocx能否在LSP程序中实现?(自动注册好了),要不程序通用起来不方便,首次使用都得注册!
还有目录能否为上次打开的目录?就象高版本的CAD一样有自动保存路径的功能,这样每次打开总是先到上一次打开的路径下!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-10-6 13:23:07 | 显示全部楼层
狂刀的代码还是无法在win2000下运行
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-10-6 14:05:53 | 显示全部楼层
对了,看能否象一般打开树木结构方式那样?目录一层一层往里进,再是文件。驱动器,文件夹,文件分开那样很慢!

Ea兄,烦把你联系方式告诉我好吗?我编程序涉及这方面问题,急想问你!急盼解决,几乎随时都在关心你们的答复,因为没有这方面的相关中文帮助目前我解决不了!
我的邮箱cwafeng@163.com
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2005-10-9 00:35:37 | 显示全部楼层
找了一晚上!!!!!!!!

http://www.codecomments.com/IE_Scripting/message315992.html

------------------------------------------
"MSComDlg.CommonDialog"
只要把我的附件abc.reg运行一下,就可以了.

谁把它写成自动加入注册表的,应该不难.




-----------------------------------
知识:
如何在 Internet Explorer 中使用授权的 ActiveX 控件
http://support.microsoft.com/default.aspx?kbid=159923
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8612个

财富等级: 富甲天下

发表于 2005-10-9 09:34:54 | 显示全部楼层
在程序第一行后插入
(vl-registry-write
    "HKEY_CLASSES_ROOT\\Licenses\\4D553650-6ABE-11cf-8ADB-00AA00C00905"
    ""
    "gfjmrfkfifkmkfffrlmmgmhmnlulkmfmqkqj"
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-10-9 15:25:57 | 显示全部楼层
(vl-registry-write
"HKEY_CLASSES_ROOT\\Licenses\\4D553650-6ABE-11cf-8ADB-00AA00C00905"
""
""
)
我这样也照样能运行 多选对话框,why?
这个注册信息看来不像是关键
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-10-9 15:40:51 | 显示全部楼层
最初由 狂刀 发布
[B](vl-registry-write
"HKEY_CLASSES_ROOT\\Licenses\\4D553650-6ABE-11cf-8ADB-00AA00C00905"
""
""
)
我这样也照样能运行 多选对话框,why?
这个注册信息看来不像是关键 [/B]


那可能是因为:
最初由 狂刀 发布
[B]
我在xp和win2000下都可以运行,不知道其他人怎么样。
win2000下用eachy提供的代码原先就可以运行。 [/B]


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

使用道具 举报

发表于 2005-10-9 17:22:28 | 显示全部楼层
经测试,用vb5,vb6的comdlg32.ocx控件,返回的路径和文件名支持长文件名
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 21:50 , Processed in 0.232283 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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