/*! ***************************************************************************** Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT. See the Apache Version 2.0 License for specific language governing permissions and limitations under the License. ***************************************************************************** */ /// ///////////////////////////// /// Windows Script Host APIS ///////////////////////////// interface ActiveXObject { new (s: string): any; } declare var ActiveXObject: ActiveXObject; interface ITextWriter { Write(s: string): void; WriteLine(s: string): void; Close(): void; } interface TextStreamBase { /** * The column number of the current character position in an input stream. */ Column: number; /** * The current line number in an input stream. */ Line: number; /** * Closes a text stream. * It is not necessary to close standard streams; they close automatically when the process ends. If * you close a standard stream, be aware that any other pointers to that standard stream become invalid. */ Close(): void; } interface TextStreamWriter extends TextStreamBase { /** * Sends a string to an output stream. */ Write(s: string): void; /** * Sends a specified number of blank lines (newline characters) to an output stream. */ WriteBlankLines(intLines: number): void; /** * Sends a string followed by a newline character to an output stream. */ WriteLine(s: string): void; } interface TextStreamReader extends TextStreamBase { /** * Returns a specified number of characters from an input stream, starting at the current pointer position. * Does not return until the ENTER key is pressed. * Can only be used on a stream in reading mode; causes an error in writing or appending mode. */ Read(characters: number): string; /** * Returns all characters from an input stream. * Can only be used on a stream in reading mode; causes an error in writing or appending mode. */ ReadAll(): string; /** * Returns an entire line from an input stream. * Although this method extracts the newline character, it does not add it to the returned string. * Can only be used on a stream in reading mode; causes an error in writing or appending mode. */ ReadLine(): string; /** * Skips a specified number of characters when reading from an input text stream. * Can only be used on a stream in reading mode; causes an error in writing or appending mode. * @param characters Positive number of characters to skip forward. (Backward skipping is not supported.) */ Skip(characters: number): void; /** * Skips the next line when reading from an input text stream. * Can only be used on a stream in reading mode, not writing or appending mode. */ SkipLine(): void; /** * Indicates whether the stream pointer position is at the end of a line. */ AtEndOfLine: boolean; /** * Indicates whether the stream pointer position is at the end of a stream. */ AtEndOfStream: boolean; } declare var WScript: { /** * Outputs text to either a message box (under WScript.exe) or the command console window followed by * a newline (under CScript.exe). */ Echo(s: any): void; /** * Exposes the write-only error output stream for the current script. * Can be accessed only while using CScript.exe. */ StdErr: TextStreamWriter; /** * Exposes the write-only output stream for the current script. * Can be accessed only while using CScript.exe. */ StdOut: TextStreamWriter; Arguments: { length: number; Item(n: number): string; }; /** * The full path of the currently running script. */ ScriptFullName: string; /** * Forces the script to stop immediately, with an optional exit code. */ Quit(exitCode?: number): number; /** * The Windows Script Host build version number. */ BuildVersion: number; /** * Fully qualified path of the host executable. */ FullName: string; /** * Gets/sets the script mode - interactive(true) or batch(false). */ Interactive: boolean; /** * The name of the host executable (WScript.exe or CScript.exe). */ Name: string; /** * Path of the directory containing the host executable. */ Path: string; /** * The filename of the currently running script. */ ScriptName: string; /** * Exposes the read-only input stream for the current script. * Can be accessed only while using CScript.exe. */ StdIn: TextStreamReader; /** * Windows Script Host version */ Version: string; /** * Connects a COM object's event sources to functions named with a given prefix, in the form prefix_event. */ ConnectObject(objEventSource: any, strPrefix: string): void; /** * Creates a COM object. * @param strProgiID * @param strPrefix Function names in the form prefix_event will be bound to this object's COM events. */ CreateObject(strProgID: string, strPrefix?: string): any; /** * Disconnects a COM object from its event sources. */ DisconnectObject(obj: any): void; /** * Retrieves an existing object with the specified ProgID from memory, or creates a new one from a file. * @param strPathname Fully qualified path to the file containing the object persisted to disk. * For objects in memory, pass a zero-length string. * @param strProgID * @param strPrefix Function names in the form prefix_event will be bound to this object's COM events. */ GetObject(strPathname: string, strProgID?: string, strPrefix?: string): any; /** * Suspends script execution for a specified length of time, then continues execution. * @param intTime Interval (in milliseconds) to suspend script execution. */ Sleep(intTime: number): void; }; /** * WSH is an alias for WScript under Windows Script Host */ declare var WSH: typeof WScript; /** * Represents an Automation SAFEARRAY */ declare class SafeArray { private constructor(); private SafeArray_typekey: SafeArray; } /** * Allows enumerating over a COM collection, which may not have indexed item access. */ interface Enumerator { /** * Returns true if the current item is the last one in the collection, or the collection is empty, * or the current item is undefined. */ atEnd(): boolean; /** * Returns the current item in the collection */ item(): T; /** * Resets the current item in the collection to the first item. If there are no items in the collection, * the current item is set to undefined. */ moveFirst(): void; /** * Moves the current item to the next item in the collection. If the enumerator is at the end of * the collection or the collection is empty, the current item is set to undefined. */ moveNext(): void; } interface EnumeratorConstructor { new (safearray: SafeArray): Enumerator; new (collection: { Item(index: any): T }): Enumerator; new (collection: any): Enumerator; } declare var Enumerator: EnumeratorConstructor; /** * Enables reading from a COM safe array, which might have an alternate lower bound, or multiple dimensions. */ interface VBArray { /** * Returns the number of dimensions (1-based). */ dimensions(): number; /** * Takes an index for each dimension in the array, and returns the item at the corresponding location. */ getItem(dimension1Index: number, ...dimensionNIndexes: number[]): T; /** * Returns the smallest available index for a given dimension. * @param dimension 1-based dimension (defaults to 1) */ lbound(dimension?: number): number; /** * Returns the largest available index for a given dimension. * @param dimension 1-based dimension (defaults to 1) */ ubound(dimension?: number): number; /** * Returns a Javascript array with all the elements in the VBArray. If there are multiple dimensions, * each successive dimension is appended to the end of the array. * Example: [[1,2,3],[4,5,6]] becomes [1,2,3,4,5,6] */ toArray(): T[]; } interface VBArrayConstructor { new (safeArray: SafeArray): VBArray; } declare var VBArray: VBArrayConstructor; /** * Automation date (VT_DATE) */ declare class VarDate { private constructor(); private VarDate_typekey: VarDate; } interface DateConstructor { new (vd: VarDate): Date; } interface Date { getVarDate: () => VarDate; }