zoukankan      html  css  js  c++  java
  • VBScript Scripting Techniques: File Open Dialog http://www.robvanderwoude.com/vbstech_ui_fileopen.php

    I accept cookies

    This website uses cookies to ensure you get the best experience on our website More info

    Rob van der Woude's Scripting Pages

    VBScript Scripting Techniques > User Interaction > File Open Dialog

    File Open Dialog

    UserAccounts.CommonDialog
    VBScript Code:
    WScript.Echo "Selected file: " & GetFileName( "C:", "" )
    WScript.Echo "Selected file: " & GetFileName( "", "Text files|*.txt" )
    WScript.Echo "Selected file: " & GetFileName( "", "MS Office documents|*.doc;*.xls;*.pps" )
    WScript.Echo "Selected file: " & GetFileName( "C:WINDOWS", "Bitmaps|*.bmp" )

    Function GetFileName( myDir, myFilter )
    ' This function opens a File Open Dialog and returns the
    ' fully qualified path of the selected file as a string.
    '
    ' Arguments:
    ' myDir is the initial directory; if no directory is
    ' specified "My Documents" is used;
    ' NOTE: this default requires the WScript.Shell
    ' object, and works only in WSH, not in HTAs!
    ' myFilter is the file type filter; format "File type description|*.ext"
    ' ALL arguments MUST get A value (use "" for defaults), OR otherwise you must
    ' use "On Error Resume Next" to prevent error messages.
    '
    ' Dependencies:
    ' Requires NUSRMGRLib (nusrmgr.cpl), available in Windows XP and later.
    ' To use the default "My Documents" WScript.Shell is used, which isn't
    ' available in HTAs.
    '
    ' Written by Rob van der Woude
    ' http://www.robvanderwoude.com

        ' Standard housekeeping
        Dim objDialog

        ' Create a dialog object
        Set objDialog = CreateObject( "UserAccounts.CommonDialog" )

        ' Check arguments and use defaults when necessary
        If myDir = "" Then
            ' Default initial folder is "My Documents"
            objDialog.InitialDir = CreateObject( "WScript.Shell" ).SpecialFolders( "MyDocuments" )
        Else
            ' Use the specified initial folder
            objDialog.InitialDir = myDir
        End If
        If myFilter = "" Then
            ' Default file filter is "All files"
            objDialog.Filter = "All files|*.*"
        Else
            ' Use the specified file filter
            objDialog.Filter = myFilter
        End If

        ' Open the dialog and return the selected file name
        If objDialog.ShowOpen Then
            GetFileName = objDialog.FileName
        Else
            GetFileName = ""
        End If
    End Function
     
    Requirements:
    Windows version: Windows XP
    Network: N/A
    Client software: N/A
    Script Engine: any (WSH if using default for directory)
    Additional options: objDialog.Filter = "MS Office files|*.doc;*.xls;*.pps|Text files|*.txt|All files|*.*"
    objDialog.FilterIndex = 1 'MS Office files
    objDialog.FilterIndex = 2 'Text files
    objDialog.FilterIndex = 3 'All files

    objDialog.Flags = 1 'Check "Open file as read-only" checkbox in dialog
    objDialog.Flags = 0 'Restore default read-write mode
    Summarized: Works in Windows XP only.
    If used in HTAs, the initial directory must be specified.
    Doesn't work in any other Windows version.
     
    File Open dialog (UserAccounts.CommonDialog)
     
    [Back to the top of this page]
     
    SAFRCFileDlg.FileOpen
    VBScript Code:
    Set objDialog = CreateObject( "SAFRCFileDlg.FileOpen" )

    ' Note: The dialog will be opened without any file name or
    '       type filter, and in the "current" directory, e.g. as
    '       remembered from the last "SAFRCFileDlg.FileOpen" or
    '       "SAFRCFileDlg.FileSave" dialog!
    If objDialog.OpenFileOpenDlg Then
        WScript.Echo "objDialog.FileName = " & objDialog.FileName
    End If
     
    Requirements:
    Windows version: Windows XP, Server 2003
    Network: N/A
    Client software: N/A
    Script Engine: any
    Summarized: Works in all Windows XP versions and in Server 2003.
    Doesn't work in Windows 95, 98, ME, NT 4, 2000 or 7, not sure about Vista.
     
    File Open dialog (UserAccounts.CommonDialog)
     
    [Back to the top of this page]
     
    InternetExplorer.Application
    VBScript Code:
    Option Explicit

    WScript.Echo "Selected file: " & ChooseFile( )


    Function ChooseFile( )
    ' Select File dialog based on a script by Mayayana
    ' Known issues:
    ' * Tree view always opens Desktop folder
    ' * In Win7/IE8 only the file NAME is returned correctly, the path returned will always be C:fakepath
    ' * If a shortcut to a file is selected, the name of that FILE will be returned, not the shortcut's
        On Error Resume Next
        Dim objIE, strSelected
        ChooseFile = ""
        Set objIE = CreateObject( "InternetExplorer.Application" )
        objIE.visible = False
        objIE.Navigate( "about:blank" )
        Do Until objIE.ReadyState = 4
        Loop
        objIE.Document.Write "<HTML><BODY><INPUT ID=""FileSelect"" NAME=""FileSelect"" TYPE=""file""><BODY></HTML>"
        With objIE.Document.all.FileSelect
            .focus
            .click
            strSelected = .value
        End With
        objIE.Quit
        Set objIE = Nothing
        ChooseFile = strSelected
    End Function
     
    Requirements:
    Windows version: any
    Network: N/A
    Client software: Internet Explorer
    Script Engine: any
    Summarized: Works in all Windows versions.
     
    File Open dialog (InternetExplorer.Application)
     
    [Back to the top of this page]
     
    WScript.Shell.Exec MSHTA
    VBScript Code:
    Option Explicit

    Dim strFile

    strFile = SelectFile( )

    If strFile = "" Then 
        WScript.Echo "No file selected."
    Else
        WScript.Echo """" & strFile & """"
    End If


    Function SelectFile( )
        ' File Browser via HTA
        ' Author:   Rudi Degrande, modifications by Denis St-Pierre and Rob van der Woude
        ' Features: Works in Windows Vista and up (Should also work in XP).
        '           Fairly fast.
        '           All native code/controls (No 3rd party DLL/ XP DLL).
        ' Caveats:  Cannot define default starting folder.
        '           Uses last folder used with MSHTA.EXE stored in Binary in [HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerComDlg32].
        '           Dialog title says "Choose file to upload".
        ' Source:   https://social.technet.microsoft.com/Forums/scriptcenter/en-US/a3b358e8-15ae-4ba3-bca5-ec349df65ef6/windows7-vbscript-open-file-dialog-box-fakepath?forum=ITCG

        Dim objExec, strMSHTA, wshShell

        SelectFile = ""

        ' For use in HTAs as well as "plain" VBScript:
        strMSHTA = "mshta.exe ""about:" & "<" & "input type=file id=FILE>" _
                 & "<" & "script>FILE.click();new ActiveXObject('Scripting.FileSystemObject')" _
                 & ".GetStandardStream(1).WriteLine(FILE.value);close();resizeTo(0,0);" & "<" & "/script>"""
        ' For use in "plain" VBScript only:
        ' strMSHTA = "mshta.exe ""about:<input type=file id=FILE>" _
        '          & "<script>FILE.click();new ActiveXObject('Scripting.FileSystemObject')" _
        '          & ".GetStandardStream(1).WriteLine(FILE.value);close();resizeTo(0,0);</script>"""

        Set wshShell = CreateObject( "WScript.Shell" )
        Set objExec = wshShell.Exec( strMSHTA )

        SelectFile = objExec.StdOut.ReadLine( )

        Set objExec = Nothing
        Set wshShell = Nothing
    End Function
     
    Requirements:
    Windows version: Windows XP and later versions
    Network: N/A
    Client software: MSHTA.EXE (native in Windows)
    Script Engine: any
    Summarized: Works in Windows XP, Vista, Windows 7, Windows 8, Windows 8.1.
     
    File Open dialog (WScript.Shell.Exec MSHTA)
     
    [Back to the top of this page]
     

    page last uploaded: 2016-09-19, 14:58
  • 相关阅读:
    是否是轮回(续)
    夜雨做成秋
    53分
    浮生六记 一成长星和月
    企业信息化常见缩略语汇总
    是否是轮回
    对信号集操作函数的使用方法和顺序
    fcntl.h
    关于linux信号量的基本使用
    linux 共享内存
  • 原文地址:https://www.cnblogs.com/liuzhaoyzz/p/6406709.html
Copyright © 2011-2022 走看看