找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 18879|回复: 4

VBS调用COM之打开、保存文件

[复制链接]
发表于 2009-4-13 10:46:13 | 显示全部楼层 |阅读模式
文章来源:http://www.hackbase.com/tech/2009-04-09/52106.html

您先把如下的代码复制,然后保存为FileSave.vbs,双击打开,您看到了什么呢?
  1. Set objDialog = CreateObject("SAFRCFileDlg.FileSave")
  2. Set fso = CreateObject("Scripting.FileSystemObject")

  3. objDialog.FileName = "test"
  4. objDialog.FileType = ".txt"
  5. intReturn = objDialog.OpenFileSaveDlg

  6. If intReturn Then
  7. fso.CreateTextFile(objDialog.FileName & objdialog.filetype)
  8. Else
  9. Wscript.Quit
  10. End if
复制代码

Vbs在很多时候一直给用户以不友好的文件打开或是保存方式,总是自己在后台处理掉了一些FSO操作,而不能让用户自己进行一些设当的DIY。所以,为什么不用COM呢?COM组件在系统里是一直存在的,利用它,我们的用户体验将会提升很多。
上面的代码是不能弹出一个保存test.txt文件的对话框呢?后缀名和文件名大家自己去修改,估计懂点vbs基础知识的人都能修改笔者的这个小脚本,并将它镶嵌到自己的脚本中去吧?
下面再看一个例子,这次是打开文件,获得文件名。
  1. set objFile = CreateObject("SAFRCFileDlg.FileOpen")

  2. bRet = objFile.OpenFileOpenDlg

  3. if bRet then
  4. Wscript.Echo "文件打开成功!文件名为:" & objFile.filename
  5. else
  6. wscript.quit
  7. End if
复制代码


运行这个脚本(FileOpen.vbs),将会弹出一个让用户自己选择文件的对话框窗口,非常友好地让用户自己选择文件。bRet是执行的返回值,不为0则成功,objFile的FileName可以返回选择的文件名。

一个名称,一个调用方法,仅此而已。
如果您觉得这个不够帅,您想用类似于MFC中完全自己DIY的CFileDialog,您该怎么办呢?也很简单,UserAccounts对象为我们提供了CommonDialog,这个更加高级的打开通用对话框。

  1. Set objDialog = CreateObject("UserAccounts.CommonDialog")

  2. objDialog.Filter = "vbs File|*.vbs"
  3. objDialog.InitialDir = "E:"
  4. bRet=objDialog.ShowOpen

  5. if bRet then
  6. strLoadFile = objDialog.FileName
  7. Wscript.Echo strLoadFile
  8. else
  9. Wscript.quit
  10. End if
复制代码


将其保存为FileOpenAdvance.vbs吧,双击打开,它连过滤的文件类型都为您留好了接口。
默认文件名,后缀过滤器,后缀索引,标志,初始化未知,拥有者,一个调用方法。

[ 本帖最后由 lxzzr 于 2009-4-13 10:48 编辑 ]

评分

参与人数 1PB +4 收起 理由
youxi01 + 4 不错!

查看全部评分

发表于 2009-4-13 12:32:01 | 显示全部楼层
第一次看到类似的代码是在那个著名的decovbe.vbs
当时觉得挺酷的
呵呵
发表于 2009-4-13 14:04:07 | 显示全部楼层
这个标题也太哗众取宠了。。。
改成“vbs调用打开、保存文件对话框”更恰当。
居然用到COM这个字眼,vbs初学者还会以为是什么高级的技术。
支持Automation的COM都用被vbs能调用,这是最基本的核心内容。微软发明Automation技术的目的就是让COM组件能够被VB或Script语言方便的调用。
ADODB.Stream、ADODB.Connection、InternetExplorer.Application、Word、Excel,等等,都是COM 部件。
没见有谁调用这些东西都要声明一下:调用COM之ADODB.Stream...
类似于说“我女朋友是女的”。。。
发表于 2009-4-16 02:53:29 | 显示全部楼层
哈哈又学了一招 !!
发表于 2009-4-17 01:12:06 | 显示全部楼层
早前就有这样的贴,我上个月用这个做了个内部网络发送和接收文件的系统
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 00:09 , Processed in 0.024934 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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