热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

VBS显示“选择文件或文件夹”对话框的代码

VBS显示“选择文件或文件夹”对话框的代码,经测试windowsxp下才可以使用,win2000,win2003没有内置这样的方法。

一、显示“选择文件”的对话框

问: 嗨,Scripting Guy!有没有什么方法可以让我使用脚本向用户显示一个对话框,供用户选择文件使用?

答:您好。|
  如果您使用的是 Windows 2000,我们不知道实现此操作的方法,至少操作系统中没有内置这样的方法。
  但如果您使用的是 Windows XP,情况就不同了。在 Windows XP 上,您可以使用"UserAccounts.CommonDialog” 对象向用户显示一个标准的“文件打开”对话框。

      可以用类似以下代码的脚本:

代码如下:

Set objDialog = CreateObject("UserAccounts.CommonDialog")

objDialog.Filter = "All Files|*.*"
objDialog.InitialDir = "C:\"
intResult = objDialog.ShowOpen
If intResult = 0 Then
Wscript.Quit
Else
Wscript.Echo objDialog.FileName
End If

      这是一个小脚本,所以让我们逐行进行解释吧:

1)我们首先创建一个对 UserAccounts.CommonDialog 对象的对象引用(名为“objDialog”)。

2)接着,我们设置对话框的“筛选”属性。我们要显示所有文件,所以我们将筛选设置成这样:
          objDialog.Filter = "All Files|*.*"

     假如我们只想显示文本文件,那该怎么办?在这种情况下,我们将使用以下筛选:
          objDialog.Filter = "Text Files|*.txt"

      您也许能够看出它是如何运行的:我们为文件类型提供说明 (Text Files),然后插入一个竖线分隔符 (|),最后使用标准的通配符来指示所有 .txt 文件 (*.txt)。
      是不是想默认显示 .txt 文件,然后为用户提供查看所有文件的选项?那么可以使用以下代码:
          objDialog.Filter = "Text Files|*.txt|All Files|*.*"

      试一试,您就明白我们的意思了。

3)然后,我们指定默认文件夹。
      默认情况下,我们希望对话框显示位于驱动器 C 的根文件夹中的文件,所以我们这样设置“InitialDir”属性:
          objDialog.InitialDir = "C:\"

      希望显示 C:\Windows 文件夹中的文件吗?那么可以使用以下代码:
          objDialog.InitialDir = "C:\Windows"

      不必担心:这是一个真正的“文件打开”对话框,所以您可以随意单击,并且可以随时停下来。您从 C:\Windows 开始并不意味着您只能打开该文件夹中的文件。

4)最后,我们使用下面这行代码显示对话框:

          intResult = objDialog.ShowOpen

  现在,我们只需坐下来,等待用户选择文件并单击“确定”(或者等待用户单击“取消”)。
  如果用户单击“取消”,则变量 intResult 将被设置为 0。在我们的脚本中,我们检查 intResult 的值,如果是 0,我们将只需要使用 Wscript.Quit 来终止此脚本。
  但是如果用户实际上选择了文件并单击了“确定”,那该怎么办?在这种情况下,intResult 将被设置为 -1,“FileDialog”属性将被设置为所选文件的路径名。我们的脚本只回显路径名,这意味着我们将得到类似以下内容的输出:

          C:\WINDOWS\Prairie Wind.bmp

  不用说,您并不局限于只回显文件路径。实际上,您可以使用 WMI、FileSystemObject 或一些其他技术来绑定该文件,然后对其执行删除、复制、压缩或检索文件属性等操作 — 您对文件能够执行的操作差不多都可以对它执行。

  但无论如何,您都需要使用脚本。

  顺便说一句,使用此方法,您一次只能选择一个文件,而不能按住“Ctrl”键选择多个文件。有一种方法可以选择多个文件,至少在 XP 计算机上可以,但是我们只能将此问题留到以后的专栏中讨论了。

 

二、显示“选择文件夹”对话框?

问:嗨,脚本专家!在前面的专栏中,您为我们展示了如何给用户显示对话框,使他们能够选择文件。存在给用户显示一个对话框,只让他们选择文件夹的办法吗?

答:您好。

  实际上,我们有 BrowseForFolder 方法,它是 Windows Shell 对象的一部分。

  让我给您一个脚本示例,然后讲一下它的工作方式:

   

代码如下:

 Const WINDOW_HANDLE = 0
    Const OPTIOnS= 0
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.BrowseForFolder _
    (WINDOW_HANDLE, "Select a folder:", OPTIONS, "C:\")
    If objFolder Is Nothing Then
    Wscript.Quit
    End If
    Set objFolderItem = objFolder.Self
    objPath = objFolderItem.Path
    Wscript.Echo objPath

  首先,我们定义一对常量:WINDOW_HANDLE 和 OPTIONS。
  WINDOW_HANDLE 常量表示需要指定给要显示的对话框的数字 ID;对于脚本,此值应始终为 0。
  将 OPTIONS 设置为 0 表示我们将显示一个非常简单的对话框,一个限制用户只从文件夹列表进行选择的对话框。或者,我们可以将 OPTIONS 设置成 &H10&。这种情况下,我们的对话框将包括文本区,用户可以在此键入文件夹路径。

  定义完常量后,我们创建 Shell.Application 对象的实例,然后使用以下代码显示“浏览文件夹”对话框:
    Set objFolder = objShell.BrowseForFolder _
    (WINDOW_HANDLE, "Select a folder:", OPTIONS, "C:\")

  您可以看到,我们只是调用 BrowseForFolder 方法,传递了四个参数:
    WINDOW_HANDLE,正如我们所说明的,是分配给对话框窗口的数字 ID。
    文本字符串 Select a folder:,将作为显示在对话框中的说明性消息。
    OPTIONS,表示构造对话框所用选项的常量。
    C:\,将作为对话框的根文件夹。对话框将打开 C:\,但不允许您选择树视图中较上方的文件位置(例如,您不能选择“我的电脑”)。如果将根文件夹设置为 C:\Scripts,则将只允许用户选择文件夹 C:\Scripts 及其所有子文件夹。

  该代码将产生一个类似屏幕上显示的对话框。
  (您是否有疑问,是的,您以前曾见过此对话框。许多 Windows 应用程序使用同样的方法,同样的对话框。)

  此时,我们的脚本暂停,等候用户选择文件夹并单击确定,或者单击取消。当用户进行了这两个操作之一,对话框将被清除,操作将存储在对象引用 objFolder 中。

  那么我们如何知道用户是否选择了一个文件夹并单击了确定,或者只单击了取消?以下代码块就用来解决这个问题:
    If objFolder Is Nothing Then
    Wscript.Quit
    End If

  该代码检查我们的对象引用 (objFolder) 是否等于一个真正对象(这是关键字 Nothing 的用途)。如果 objFolder 等于 Nothing,则意味着用户单击了取消;如果是那样的话,我们只简单用 Wscript.Quit 退出脚本。如果 objFolder 不等于 Nothing,那么 objFolder 一定指向一个真正的对象;于是脚本将继续运行。

  由于 Shell 对象的特点,以下两行代码是必要的:
    Set objFolderItem = objFolder.Self
    objPath = objFolderItem.Path

  当用户选择文件夹并单击确定,他们将得到 Shell Folder 对象的实例。然而,由于某些原因您不能使用 Shell Folder 对象;如果我们要检索选定文件夹的路径,我们得用 FolderItem 对象来代替。(为什么是这样呢?我们不知道。)于是,我们的第一行代码使用 Self 方法返回一个 FolderItem 对象,该对象正与我们的 Folder 对象相同。第二行代码将到此 FolderItem 对象的路径存储到变量 objPath 中。看上去有点笨拙,但它确实能够工作。

  最后我们回显到选定文件夹的路径,到此工作既已完成。

  正如我们说明的,示例对话框使用 C:\ 作为根文件夹,不允许您选择位于计算机其他地方的文件夹。有时这样做很好;这样会迫使用户从一组特定文件夹中进行选择。但有时,想使用户能够选择文件系统中任意位置的文件夹。这可能吗?

  当然可以。我们不详述这个修改后的脚本,但该脚本会将“我的电脑”设置为根文件夹:
    

代码如下:

Const MY_COMPUTER = &H11&
    Const WINDOW_HANDLE = 0
    Const OPTIOnS= 0
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.Namespace(MY_COMPUTER)
    Set objFolderItem = objFolder.Self
    strPath = objFolderItem.Path
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.BrowseForFolder _
    (WINDOW_HANDLE, "Select a folder:", OPTIONS, strPath)
    If objFolder Is Nothing Then
    Wscript.Quit
    End If
    Set objFolderItem = objFolder.Self
    objPath = objFolderItem.Path
    Wscript.Echo objPath

  如您所料,所得到的对话框提供了很多选择。这正是您所需要的。


推荐阅读
  • QUIC协议:快速UDP互联网连接
    QUIC(Quick UDP Internet Connections)是谷歌开发的一种旨在提高网络性能和安全性的传输层协议。它基于UDP,并结合了TLS级别的安全性,提供了更高效、更可靠的互联网通信方式。 ... [详细]
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 在 Windows 10 中,F1 至 F12 键默认设置为快捷功能键。本文将介绍几种有效方法来禁用这些快捷键,并恢复其标准功能键的作用。请注意,部分笔记本电脑的快捷键可能无法完全关闭。 ... [详细]
  • 本文总结了2018年的关键成就,包括职业变动、购车、考取驾照等重要事件,并分享了读书、工作、家庭和朋友方面的感悟。同时,展望2019年,制定了健康、软实力提升和技术学习的具体目标。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • CSS 布局:液态三栏混合宽度布局
    本文介绍了如何使用 CSS 实现液态的三栏布局,其中各栏具有不同的宽度设置。通过调整容器和内容区域的属性,可以实现灵活且响应式的网页设计。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • 本文介绍了如何使用jQuery根据元素的类型(如复选框)和标签名(如段落)来获取DOM对象。这有助于更高效地操作网页中的特定元素。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文介绍如何在 Xcode 中使用快捷键和菜单命令对多行代码进行缩进,包括右缩进和左缩进的具体操作方法。 ... [详细]
  • 介绍一个提供正版Windows软件下载的权威网站,确保用户能够安全合法地获取所需软件。 ... [详细]
author-avatar
灸灵侯嗒黍_147
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有