// Generated IDL File (by Great Migrations Studio) 
// Created: 12/3/2025 09:38:58 AM
// Source: C:\Windows\System32\scrrun.dll
// typelib filename: scrrun.dll
[
    uuid(420B2830-E718-11CF-893D-00A0C9054228),
    version(1.0),
    helpstring("Microsoft Scripting Runtime"),
    helpfile("C:\Windows\System32\VBENLR98.CHM"),
    helpcontext(00000000)
]
library Scripting
{
    // TLib : OLE Automation : {00020430-0000-0000-C000-000000000046}
    importlib("stdole2.tlb");

    // Forward declare all types defined in this typelib

    interface IDictionary;
    interface IFileSystem;
    interface IDriveCollection;
    interface IDrive;
    interface IFolder;
    interface IFolderCollection;
    interface IFileCollection;
    interface IFile;
    interface ITextStream;
    interface IFileSystem3;
    interface IScriptEncoder;
    coclass Dictionary;
    coclass FileSystemObject;
    coclass Drive;
    coclass Drives;
    coclass Folder;
    coclass Folders;
    coclass File;
    coclass Files;
    coclass TextStream;
    coclass Encoder;

    typedef enum {
        BinaryCompare = 0,
        TextCompare = 1,
        DatabaseCompare = 2
    } CompareMethod;

    typedef enum {
        ForReading = 1,
        ForWriting = 2,
        ForAppending = 8
    } IOMode;

    typedef enum {
        TristateTrue = 0xffffffff,
        TristateFalse = 0,
        TristateUseDefault = 0xfffffffe,
        TristateMixed = 0xfffffffe
    } Tristate;

    typedef enum {
        Normal = 0,
        ReadOnly = 1,
        Hidden = 2,
        System = 4,
        Volume = 8,
        Directory = 16,
        Archive = 32,
        Alias = 1024,
        Compressed = 2048
    } FileAttribute;

    [
        odl,
        uuid(42C642C1-97E1-11CF-978F-00A02463E06F),
        helpstring("Scripting.Dictionary Interface"),
        helpcontext(0x00214b22),
        hidden,
        dual,
        oleautomation
    ]
    interface IDictionary : IDispatch {
        [id(00000000), propputref, helpstring("Set or get the item for a given key"), helpcontext(0x00214b3a)]
        HRESULT Item(
            [in] VARIANT* Key,
            [in] VARIANT* pRetItem);
        [id(00000000), propput, helpstring("Set or get the item for a given key"), helpcontext(0x00214b3a)]
        HRESULT Item(
            [in] VARIANT* Key,
            [in] VARIANT* pRetItem);
        [id(00000000), propget, helpstring("Set or get the item for a given key"), helpcontext(0x00214b3a)]
        HRESULT Item(
            [in] VARIANT* Key,
            [out, retval] VARIANT* pRetItem);
        [id(0x00000001), helpstring("Add a new key and item to the dictionary."), helpcontext(0x00214b3c)]
        HRESULT Add(
            [in] VARIANT* Key,
            [in] VARIANT* Item);
        [id(0x00000002), propget, helpstring("Get the number of items in the dictionary."), helpcontext(0x00214b39)]
        HRESULT Count([out, retval] long* pCount);
        [id(0x00000003), helpstring("Determine if a given key is in the dictionary."), helpcontext(0x00214b3d)]
        HRESULT Exists(
            [in] VARIANT* Key,
            [out, retval] VARIANT_BOOL* pExists);
        [id(0x00000004), helpstring("Get an array containing all items in the dictionary."), helpcontext(0x00214b3e)]
        HRESULT Items([out, retval] VARIANT* pItemsArray);
        [id(0x00000005), propput, helpstring("Change a key to a different key."), helpcontext(0x00214b3b)]
        HRESULT Key(
            [in] VARIANT* Key,
            [in] VARIANT* rhs);
        [id(0x00000006), helpstring("Get an array containing all keys in the dictionary."), helpcontext(0x00214b3f)]
        HRESULT Keys([out, retval] VARIANT* pKeysArray);
        [id(0x00000007), helpstring("Remove a given key from the dictionary."), helpcontext(0x00214b40)]
        HRESULT Remove([in] VARIANT* Key);
        [id(0x00000008), helpstring("Remove all information from the dictionary."), helpcontext(0x00214b41)]
        HRESULT RemoveAll();
        [id(0x00000009), propput, helpstring("Set or get the string comparison method."), helpcontext(0x00214b2b)]
        HRESULT CompareMode([in] CompareMethod pcomp);
        [id(0x00000009), propget, helpstring("Set or get the string comparison method."), helpcontext(0x00214b2b)]
        HRESULT CompareMode([out, retval] CompareMethod* pcomp);
        [id(0xfffffffc), restricted]
        HRESULT _NewEnum([out, retval] IUnknown** ppunk);
        [id(0x0000000a), propget, hidden]
        HRESULT HashVal(
            [in] VARIANT* Key,
            [out, retval] VARIANT* HashVal);
    };

    [
        uuid(EE09B103-97E0-11CF-978F-00A02463E06F),
        helpstring("Scripting.Dictionary"),
        helpcontext(0x00214b22)
    ]
    coclass Dictionary {
        [default] interface IDictionary;
    };

    [
        odl,
        uuid(0AB5A3D0-E5B6-11D0-ABF5-00A0C90FFFC0),
        helpstring("FileSystemObject"),
        helpcontext(0x00214b27),
        hidden,
        dual,
        nonextensible,
        oleautomation
    ]
    interface IFileSystem : IDispatch {
        [id(0x0000271a), propget, helpstring("Get drives collection"), helpcontext(0x00214b8e)]
        HRESULT Drives([out, retval] IDriveCollection** ppdrives);
        [id(0x00002710), helpstring("Generate a path from an existing path and a name"), helpcontext(0x00214b8f)]
        HRESULT BuildPath(
            [in] BSTR Path,
            [in] BSTR Name,
            [out, retval] BSTR* pbstrResult);
        [id(0x00002714), helpstring("Return drive from a path"), helpcontext(0x00214ba1)]
        HRESULT GetDriveName(
            [in] BSTR Path,
            [out, retval] BSTR* pbstrResult);
        [id(0x00002715), helpstring("Return path to the parent folder"), helpcontext(0x00214ba8)]
        HRESULT GetParentFolderName(
            [in] BSTR Path,
            [out, retval] BSTR* pbstrResult);
        [id(0x00002716), helpstring("Return the file name from a path"), helpcontext(0x00214ba5)]
        HRESULT GetFileName(
            [in] BSTR Path,
            [out, retval] BSTR* pbstrResult);
        [id(0x00002717), helpstring("Return base name from a path"), helpcontext(0x00214b9f)]
        HRESULT GetBaseName(
            [in] BSTR Path,
            [out, retval] BSTR* pbstrResult);
        [id(0x00002718), helpstring("Return extension from path"), helpcontext(0x00214ba4)]
        HRESULT GetExtensionName(
            [in] BSTR Path,
            [out, retval] BSTR* pbstrResult);
        [id(0x00002712), helpstring("Return the canonical representation of the path"), helpcontext(0x00214b9d)]
        HRESULT GetAbsolutePathName(
            [in] BSTR Path,
            [out, retval] BSTR* pbstrResult);
        [id(0x00002713), helpstring("Generate name that can be used to name a temporary file"), helpcontext(0x00214baa)]
        HRESULT GetTempName([out, retval] BSTR* pbstrResult);
        [id(0x0000271f), helpstring("Check if a drive or a share exists"), helpcontext(0x00214b96)]
        HRESULT DriveExists(
            [in] BSTR DriveSpec,
            [out, retval] VARIANT_BOOL* pfExists);
        [id(0x00002720), helpstring("Check if a file exists"), helpcontext(0x00214b97)]
        HRESULT FileExists(
            [in] BSTR FileSpec,
            [out, retval] VARIANT_BOOL* pfExists);
        [id(0x00002721), helpstring("Check if a path exists"), helpcontext(0x00214b9a)]
        HRESULT FolderExists(
            [in] BSTR FolderSpec,
            [out, retval] VARIANT_BOOL* pfExists);
        [id(0x0000271b), helpstring("Get drive or UNC share"), helpcontext(0x00214ba0)]
        HRESULT GetDrive(
            [in] BSTR DriveSpec,
            [out, retval] IDrive** ppdrive);
        [id(0x0000271c), helpstring("Get file"), helpcontext(0x00214ba6)]
        HRESULT GetFile(
            [in] BSTR FilePath,
            [out, retval] IFile** ppfile);
        [id(0x0000271d), helpstring("Get folder"), helpcontext(0x00214ba7)]
        HRESULT GetFolder(
            [in] BSTR FolderPath,
            [out, retval] IFolder** ppfolder);
        [id(0x0000271e), helpstring("Get location of various system folders"), helpcontext(0x00214ba9)]
        HRESULT GetSpecialFolder(
            [in] SpecialFolderConst SpecialFolder,
            [out, retval] IFolder** ppfolder);
        [id(0x000004b0), helpstring("Delete a file"), helpcontext(0x00214b94)]
        HRESULT DeleteFile(
            [in] BSTR FileSpec,
            [in, optional, defaultvalue(0)] VARIANT_BOOL Force);
        [id(0x000004b1), helpstring("Delete a folder"), helpcontext(0x00214b95)]
        HRESULT DeleteFolder(
            [in] BSTR FolderSpec,
            [in, optional, defaultvalue(0)] VARIANT_BOOL Force);
        [id(0x000004b4), helpstring("Move a file"), helpcontext(0x00214bab)]
        HRESULT MoveFile(
            [in] BSTR Source,
            [in] BSTR Destination);
        [id(0x000004b5), helpstring("Move a folder"), helpcontext(0x00214bac)]
        HRESULT MoveFolder(
            [in] BSTR Source,
            [in] BSTR Destination);
        [id(0x000004b2), helpstring("Copy a file"), helpcontext(0x00214b90)]
        HRESULT CopyFile(
            [in] BSTR Source,
            [in] BSTR Destination,
            [in, optional, defaultvalue(-1)] VARIANT_BOOL OverWriteFiles);
        [id(0x000004b3), helpstring("Copy a folder"), helpcontext(0x00214b91)]
        HRESULT CopyFolder(
            [in] BSTR Source,
            [in] BSTR Destination,
            [in, optional, defaultvalue(-1)] VARIANT_BOOL OverWriteFiles);
        [id(0x00000460), helpstring("Create a folder"), helpcontext(0x00214b92)]
        HRESULT CreateFolder(
            [in] BSTR Path,
            [out, retval] IFolder** ppfolder);
        [id(0x0000044d), helpstring("Create a file as a TextStream"), helpcontext(0x00214b93)]
        HRESULT CreateTextFile(
            [in] BSTR FileName,
            [in, optional, defaultvalue(-1)] VARIANT_BOOL Overwrite,
            [in, optional, defaultvalue(0)] VARIANT_BOOL Unicode,
            [out, retval] ITextStream** ppts);
        [id(0x0000044c), helpstring("Open a file as a TextStream"), helpcontext(0x00214bad)]
        HRESULT OpenTextFile(
            [in] BSTR FileName,
            [in, optional, defaultvalue(1)] IOMode IOMode,
            [in, optional, defaultvalue(0)] VARIANT_BOOL Create,
            [in, optional, defaultvalue(0)] Tristate Format,
            [out, retval] ITextStream** ppts);
    };

    [
        odl,
        uuid(C7C3F5A1-88A3-11D0-ABCB-00A0C90FFFC0),
        helpstring("Drive Collection Interface"),
        helpcontext(0x00214b24),
        hidden,
        dual,
        nonextensible,
        oleautomation
    ]
    interface IDriveCollection : IDispatch {
        [id(00000000), propget, helpstring("Get drive"), helpcontext(0x00214b3a)]
        HRESULT Item(
            [in] VARIANT Key,
            [out, retval] IDrive** ppdrive);
        [id(0xfffffffc), propget, restricted, hidden]
        HRESULT _NewEnum([out, retval] IUnknown** ppenum);
        [id(0x00000001), propget, helpstring("Number of drives"), helpcontext(0x00214b39)]
        HRESULT Count([out, retval] long* plCount);
    };

    [
        odl,
        uuid(C7C3F5A0-88A3-11D0-ABCB-00A0C90FFFC0),
        helpstring("Drive Interface"),
        helpcontext(0x00214b23),
        hidden,
        dual,
        nonextensible,
        oleautomation
    ]
    interface IDrive : IDispatch {
        [id(00000000), propget, helpstring("Path"), helpcontext(0x00214b48)]
        HRESULT Path([out, retval] BSTR* pbstrPath);
        [id(0x00002710), propget, helpstring("Drive letter"), helpcontext(0x00214b43)]
        HRESULT DriveLetter([out, retval] BSTR* pbstrLetter);
        [id(0x00002711), propget, helpstring("Share name"), helpcontext(0x00214b4b)]
        HRESULT ShareName([out, retval] BSTR* pbstrShareName);
        [id(0x00002712), propget, helpstring("Drive type"), helpcontext(0x00214b44)]
        HRESULT DriveType([out, retval] DriveTypeConst* pdt);
        [id(0x00002713), propget, helpstring("Root folder"), helpcontext(0x00214b49)]
        HRESULT RootFolder([out, retval] IFolder** ppfolder);
        [id(0x00002715), propget, helpstring("Get available space"), helpcontext(0x00214b42)]
        HRESULT AvailableSpace([out, retval] VARIANT* pvarAvail);
        [id(0x00002714), propget, helpstring("Get drive free space"), helpcontext(0x00214b46)]
        HRESULT FreeSpace([out, retval] VARIANT* pvarFree);
        [id(0x00002716), propget, helpstring("Get total drive size"), helpcontext(0x00214b4c)]
        HRESULT TotalSize([out, retval] VARIANT* pvarTotal);
        [id(0x00002717), propget, helpstring("Name of volume"), helpcontext(0x00214b4d)]
        HRESULT VolumeName([out, retval] BSTR* pbstrName);
        [id(0x00002717), propput, helpstring("Name of volume"), helpcontext(0x00214b4d)]
        HRESULT VolumeName([in] BSTR pbstrName);
        [id(0x00002718), propget, helpstring("Filesystem type"), helpcontext(0x00214b45)]
        HRESULT FileSystem([out, retval] BSTR* pbstrFileSystem);
        [id(0x00002719), propget, helpstring("Serial number"), helpcontext(0x00214b4a)]
        HRESULT SerialNumber([out, retval] long* pulSerialNumber);
        [id(0x0000271a), propget, helpstring("Check if disk is available"), helpcontext(0x00214b47)]
        HRESULT IsReady([out, retval] VARIANT_BOOL* pfReady);
    };

    typedef enum {
        UnknownType = 0,
        Removable = 1,
        Fixed = 2,
        Remote = 3,
        CDRom = 4,
        RamDisk = 5
    } DriveTypeConst;

    [
        odl,
        uuid(C7C3F5A2-88A3-11D0-ABCB-00A0C90FFFC0),
        helpstring("Folder Interface"),
        helpcontext(0x00214b28),
        hidden,
        dual,
        nonextensible,
        oleautomation
    ]
    interface IFolder : IDispatch {
        [id(00000000), propget, helpstring("Path to folder"), helpcontext(0x00214b48)]
        HRESULT Path([out, retval] BSTR* pbstrPath);
        [id(0x000003e8), propget, helpstring("Get name of folder"), helpcontext(0x00214b6c)]
        HRESULT Name([out, retval] BSTR* pbstrName);
        [id(0x000003e8), propput, helpstring("Get name of folder"), helpcontext(0x00214b6c)]
        HRESULT Name([in] BSTR pbstrName);
        [id(0x000003ea), propget, helpstring("Short path"), helpcontext(0x00214b6e)]
        HRESULT ShortPath([out, retval] BSTR* pbstrPath);
        [id(0x000003e9), propget, helpstring("Short name"), helpcontext(0x00214b6d)]
        HRESULT ShortName([out, retval] BSTR* pbstrName);
        [id(0x000003ec), propget, helpstring("Get drive that contains folder"), helpcontext(0x00214b58)]
        HRESULT Drive([out, retval] IDrive** ppdrive);
        [id(0x000003ed), propget, helpstring("Get parent folder"), helpcontext(0x00214b6f)]
        HRESULT ParentFolder([out, retval] IFolder** ppfolder);
        [id(0x000003eb), propget, helpstring("Folder attributes"), helpcontext(0x00214b54)]
        HRESULT Attributes([out, retval] FileAttribute* pfa);
        [id(0x000003eb), propput, helpstring("Folder attributes"), helpcontext(0x00214b54)]
        HRESULT Attributes([in] FileAttribute pfa);
        [id(0x000003ee), propget, helpstring("Date folder was created"), helpcontext(0x00214b55)]
        HRESULT DateCreated([out, retval] DATE* pdate);
        [id(0x000003ef), propget, helpstring("Date folder was last modified"), helpcontext(0x00214b57)]
        HRESULT DateLastModified([out, retval] DATE* pdate);
        [id(0x000003f0), propget, helpstring("Date folder was last accessed"), helpcontext(0x00214b56)]
        HRESULT DateLastAccessed([out, retval] DATE* pdate);
        [id(0x000003f2), propget, helpstring("Type description"), helpcontext(0x00214b71)]
        HRESULT Type([out, retval] BSTR* pbstrType);
        [id(0x000004b1), helpstring("Delete this folder"), helpcontext(0x00214b75)]
        HRESULT Delete([in, optional, defaultvalue(0)] VARIANT_BOOL Force);
        [id(0x000004b3), helpstring("Copy this folder"), helpcontext(0x00214b74)]
        HRESULT Copy(
            [in] BSTR Destination,
            [in, optional, defaultvalue(-1)] VARIANT_BOOL OverWriteFiles);
        [id(0x000004b5), helpstring("Move this folder"), helpcontext(0x00214b76)]
        HRESULT Move([in] BSTR Destination);
        [id(0x00002710), propget, helpstring("True if folder is root"), helpcontext(0x00214bb5)]
        HRESULT IsRootFolder([out, retval] VARIANT_BOOL* pfRootFolder);
        [id(0x000003f1), propget, helpstring("Sum of files and subfolders"), helpcontext(0x00214b70)]
        HRESULT Size([out, retval] VARIANT* pvarSize);
        [id(0x00002711), propget, helpstring("Get folders collection"), helpcontext(0x00214bb6)]
        HRESULT SubFolders([out, retval] IFolderCollection** ppfolders);
        [id(0x00002712), propget, helpstring("Get files collection"), helpcontext(0x00214bcf)]
        HRESULT Files([out, retval] IFileCollection** ppfiles);
        [id(0x0000044d), helpstring("Create a file as a TextStream"), helpcontext(0x00214b93)]
        HRESULT CreateTextFile(
            [in] BSTR FileName,
            [in, optional, defaultvalue(-1)] VARIANT_BOOL Overwrite,
            [in, optional, defaultvalue(0)] VARIANT_BOOL Unicode,
            [out, retval] ITextStream** ppts);
    };

    [
        odl,
        uuid(C7C3F5A3-88A3-11D0-ABCB-00A0C90FFFC0),
        helpstring("Folder Collection Interface"),
        helpcontext(0x00214b29),
        hidden,
        dual,
        nonextensible,
        oleautomation
    ]
    interface IFolderCollection : IDispatch {
        [id(0x00000002), helpstring("Create a new folder"), helpcontext(0x00214b3c)]
        HRESULT Add(
            [in] BSTR Name,
            [out, retval] IFolder** ppfolder);
        [id(00000000), propget, helpstring("Get folder"), helpcontext(0x00214b3a)]
        HRESULT Item(
            [in] VARIANT Key,
            [out, retval] IFolder** ppfolder);
        [id(0xfffffffc), propget, restricted, hidden]
        HRESULT _NewEnum([out, retval] IUnknown** ppenum);
        [id(0x00000001), propget, helpstring("Number of folders"), helpcontext(0x00214b39)]
        HRESULT Count([out, retval] long* plCount);
    };

    [
        odl,
        uuid(C7C3F5A5-88A3-11D0-ABCB-00A0C90FFFC0),
        helpstring("File Collection Interface"),
        helpcontext(0x00214b26),
        hidden,
        dual,
        nonextensible,
        oleautomation
    ]
    interface IFileCollection : IDispatch {
        [id(00000000), propget, helpstring("Get file"), helpcontext(0x00214b3a)]
        HRESULT Item(
            [in] VARIANT Key,
            [out, retval] IFile** ppfile);
        [id(0xfffffffc), propget, restricted, hidden]
        HRESULT _NewEnum([out, retval] IUnknown** ppenum);
        [id(0x00000001), propget, helpstring("Number of folders"), helpcontext(0x00214b39)]
        HRESULT Count([out, retval] long* plCount);
    };

    [
        odl,
        uuid(C7C3F5A4-88A3-11D0-ABCB-00A0C90FFFC0),
        helpstring("File Interface"),
        helpcontext(0x00214b25),
        hidden,
        dual,
        nonextensible,
        oleautomation
    ]
    interface IFile : IDispatch {
        [id(00000000), propget, helpstring("Path to the file"), helpcontext(0x00214b48)]
        HRESULT Path([out, retval] BSTR* pbstrPath);
        [id(0x000003e8), propget, helpstring("Get name of file"), helpcontext(0x00214b6c)]
        HRESULT Name([out, retval] BSTR* pbstrName);
        [id(0x000003e8), propput, helpstring("Get name of file"), helpcontext(0x00214b6c)]
        HRESULT Name([in] BSTR pbstrName);
        [id(0x000003ea), propget, helpstring("Short path"), helpcontext(0x00214b6e)]
        HRESULT ShortPath([out, retval] BSTR* pbstrPath);
        [id(0x000003e9), propget, helpstring("Short name"), helpcontext(0x00214b6d)]
        HRESULT ShortName([out, retval] BSTR* pbstrName);
        [id(0x000003ec), propget, helpstring("Get drive that contains file"), helpcontext(0x00214b58)]
        HRESULT Drive([out, retval] IDrive** ppdrive);
        [id(0x000003ed), propget, helpstring("Get folder that contains file"), helpcontext(0x00214b6f)]
        HRESULT ParentFolder([out, retval] IFolder** ppfolder);
        [id(0x000003eb), propget, helpstring("File attributes"), helpcontext(0x00214b54)]
        HRESULT Attributes([out, retval] FileAttribute* pfa);
        [id(0x000003eb), propput, helpstring("File attributes"), helpcontext(0x00214b54)]
        HRESULT Attributes([in] FileAttribute pfa);
        [id(0x000003ee), propget, helpstring("Date file was created"), helpcontext(0x00214b55)]
        HRESULT DateCreated([out, retval] DATE* pdate);
        [id(0x000003ef), propget, helpstring("Date file was last modified"), helpcontext(0x00214b57)]
        HRESULT DateLastModified([out, retval] DATE* pdate);
        [id(0x000003f0), propget, helpstring("Date file was last accessed"), helpcontext(0x00214b56)]
        HRESULT DateLastAccessed([out, retval] DATE* pdate);
        [id(0x000003f1), propget, helpstring("File size"), helpcontext(0x00214b70)]
        HRESULT Size([out, retval] VARIANT* pvarSize);
        [id(0x000003f2), propget, helpstring("Type description"), helpcontext(0x00214b71)]
        HRESULT Type([out, retval] BSTR* pbstrType);
        [id(0x000004b0), helpstring("Delete this file"), helpcontext(0x00214b75)]
        HRESULT Delete([in, optional, defaultvalue(0)] VARIANT_BOOL Force);
        [id(0x000004b2), helpstring("Copy this file"), helpcontext(0x00214b74)]
        HRESULT Copy(
            [in] BSTR Destination,
            [in, optional, defaultvalue(-1)] VARIANT_BOOL OverWriteFiles);
        [id(0x000004b4), helpstring("Move this file"), helpcontext(0x00214b76)]
        HRESULT Move([in] BSTR Destination);
        [id(0x0000044c), helpstring("Open a file as a TextStream"), helpcontext(0x00214b77)]
        HRESULT OpenAsTextStream(
            [in, optional, defaultvalue(1)] IOMode IOMode,
            [in, optional, defaultvalue(0)] Tristate Format,
            [out, retval] ITextStream** ppts);
    };

    [
        odl,
        uuid(53BAD8C1-E718-11CF-893D-00A0C9054228),
        helpstring("Scripting.TextStream Interface"),
        helpcontext(0x00214b2a),
        hidden,
        dual,
        nonextensible,
        oleautomation
    ]
    interface ITextStream : IDispatch {
        [id(0x00002710), propget, helpstring("Current line number"), helpcontext(0x00214bba)]
        HRESULT Line([out, retval] long* Line);
        [id(0xfffffdef), propget, helpstring("Current column number"), helpcontext(0x00214bb9)]
        HRESULT Column([out, retval] long* Column);
        [id(0x00002712), propget, helpstring("Is the current position at the end of the stream?"), helpcontext(0x00214bb8)]
        HRESULT AtEndOfStream([out, retval] VARIANT_BOOL* EOS);
        [id(0x00002713), propget, helpstring("Is the current position at the end of a line?"), helpcontext(0x00214bb7)]
        HRESULT AtEndOfLine([out, retval] VARIANT_BOOL* EOL);
        [id(0x00002714), helpstring("Read a specific number of characters into a string"), helpcontext(0x00214bbc)]
        HRESULT Read(
            [in] long Characters,
            [out, retval] BSTR* Text);
        [id(0x00002715), helpstring("Read an entire line into a string"), helpcontext(0x00214bbe)]
        HRESULT ReadLine([out, retval] BSTR* Text);
        [id(0x00002716), helpstring("Read the entire stream into a string"), helpcontext(0x00214bbd)]
        HRESULT ReadAll([out, retval] BSTR* Text);
        [id(0x00002717), helpstring("Write a string to the stream"), helpcontext(0x00214bc1)]
        HRESULT Write([in] BSTR Text);
        [id(0x00002718), helpstring("Write a string and an end of line to the stream"), helpcontext(0x00214bc2)]
        HRESULT WriteLine([in, optional, defaultvalue("")] BSTR Text);
        [id(0x00002719), helpstring("Write a number of blank lines to the stream"), helpcontext(0x00214bc3)]
        HRESULT WriteBlankLines([in] long Lines);
        [id(0x0000271a), helpstring("Skip a specific number of characters"), helpcontext(0x00214bbf)]
        HRESULT Skip([in] long Characters);
        [id(0x0000271b), helpstring("Skip a line"), helpcontext(0x00214bc0)]
        HRESULT SkipLine();
        [id(0x0000271c), helpstring("Close a text stream"), helpcontext(0x00214bbb)]
        HRESULT Close();
    };

    typedef enum {
        WindowsFolder = 0,
        SystemFolder = 1,
        TemporaryFolder = 2
    } SpecialFolderConst;

    [
        odl,
        uuid(2A0B9D10-4B87-11D3-A97A-00104B365C9F),
        helpstring("FileSystemObject"),
        helpcontext(0x00214b27),
        dual,
        nonextensible,
        oleautomation
    ]
    interface IFileSystem3 : IFileSystem {
        [id(0x00004e20), helpstring("Retrieve the standard input, output or error stream")]
        HRESULT GetStandardStream(
            [in] StandardStreamTypes StandardStreamType,
            [in, optional, defaultvalue(0)] VARIANT_BOOL Unicode,
            [out, retval] ITextStream** ppts);
        [id(0x00004e2a), helpstring("Retrieve the file version of the specified file into a string")]
        HRESULT GetFileVersion(
            [in] BSTR FileName,
            [out, retval] BSTR* FileVersion);
    };

    typedef enum {
        StdIn = 0,
        StdOut = 1,
        StdErr = 2
    } StandardStreamTypes;

    [
        uuid(0D43FE01-F093-11CF-8940-00A0C9054228),
        helpstring("FileSystem Object"),
        helpcontext(0x00214b27)
    ]
    coclass FileSystemObject {
        [default] interface IFileSystem3;
    };

    [
        uuid(C7C3F5B1-88A3-11D0-ABCB-00A0C90FFFC0),
        helpstring("Drive Object"),
        helpcontext(0x00214b23),
        noncreatable
    ]
    coclass Drive {
        [default] interface IDrive;
    };

    [
        uuid(C7C3F5B2-88A3-11D0-ABCB-00A0C90FFFC0),
        helpstring("Collection of drives associated with drive letters"),
        helpcontext(0x00214b24),
        noncreatable
    ]
    coclass Drives {
        [default] interface IDriveCollection;
    };

    [
        uuid(C7C3F5B3-88A3-11D0-ABCB-00A0C90FFFC0),
        helpstring("Folder object"),
        helpcontext(0x00214b28),
        noncreatable
    ]
    coclass Folder {
        [default] interface IFolder;
    };

    [
        uuid(C7C3F5B4-88A3-11D0-ABCB-00A0C90FFFC0),
        helpstring("Collection of subfolders in a folder"),
        helpcontext(0x00214b29),
        noncreatable
    ]
    coclass Folders {
        [default] interface IFolderCollection;
    };

    [
        uuid(C7C3F5B5-88A3-11D0-ABCB-00A0C90FFFC0),
        helpstring("File object"),
        helpcontext(0x00214b25),
        noncreatable
    ]
    coclass File {
        [default] interface IFile;
    };

    [
        uuid(C7C3F5B6-88A3-11D0-ABCB-00A0C90FFFC0),
        helpstring("Collection of files in a folder"),
        helpcontext(0x00214b26),
        noncreatable
    ]
    coclass Files {
        [default] interface IFileCollection;
    };

    [
        uuid(0BB02EC0-EF49-11CF-8940-00A0C9054228),
        helpstring("TextStream object"),
        helpcontext(0x00214b2a),
        noncreatable
    ]
    coclass TextStream {
        [default] interface ITextStream;
    };

    [
        odl,
        uuid(AADC65F6-CFF1-11D1-B747-00C04FC2B085),
        helpstring("Script Encoder Interface"),
        helpcontext(0x00215491),
        dual,
        oleautomation
    ]
    interface IScriptEncoder : IDispatch {
        [id(00000000), helpstring("Call the Encoder determined by szExt, passing bstrStreamIn and optional arguments"), helpcontext(0x00215494)]
        HRESULT EncodeScriptFile(
            [in] BSTR szExt,
            [in] BSTR bstrStreamIn,
            [in] long cFlags,
            [in] BSTR bstrDefaultLang,
            [out, retval] BSTR* pbstrStreamOut);
    };

    [
        uuid(32DA2B15-CFED-11D1-B747-00C04FC2B085),
        helpstring("Script Encoder Object"),
        helpcontext(0x00215490)
    ]
    coclass Encoder {
        [default] interface IScriptEncoder;
    };

};