1/*! ***************************************************************************** 2Copyright (c) Microsoft Corporation. All rights reserved. 3Licensed under the Apache License, Version 2.0 (the "License"); you may not use 4this file except in compliance with the License. You may obtain a copy of the 5License at http://www.apache.org/licenses/LICENSE-2.0 6 7THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 8KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED 9WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, 10MERCHANTABLITY OR NON-INFRINGEMENT. 11 12See the Apache Version 2.0 License for specific language governing permissions 13and limitations under the License. 14***************************************************************************** */ 15 16 17 18/// <reference no-default-lib="true"/> 19 20 21 22 23///////////////////////////// 24/// Windows Script Host APIS 25///////////////////////////// 26 27 28interface ActiveXObject { 29 new (s: string): any; 30} 31declare var ActiveXObject: ActiveXObject; 32 33interface ITextWriter { 34 Write(s: string): void; 35 WriteLine(s: string): void; 36 Close(): void; 37} 38 39interface TextStreamBase { 40 /** 41 * The column number of the current character position in an input stream. 42 */ 43 Column: number; 44 45 /** 46 * The current line number in an input stream. 47 */ 48 Line: number; 49 50 /** 51 * Closes a text stream. 52 * It is not necessary to close standard streams; they close automatically when the process ends. If 53 * you close a standard stream, be aware that any other pointers to that standard stream become invalid. 54 */ 55 Close(): void; 56} 57 58interface TextStreamWriter extends TextStreamBase { 59 /** 60 * Sends a string to an output stream. 61 */ 62 Write(s: string): void; 63 64 /** 65 * Sends a specified number of blank lines (newline characters) to an output stream. 66 */ 67 WriteBlankLines(intLines: number): void; 68 69 /** 70 * Sends a string followed by a newline character to an output stream. 71 */ 72 WriteLine(s: string): void; 73} 74 75interface TextStreamReader extends TextStreamBase { 76 /** 77 * Returns a specified number of characters from an input stream, starting at the current pointer position. 78 * Does not return until the ENTER key is pressed. 79 * Can only be used on a stream in reading mode; causes an error in writing or appending mode. 80 */ 81 Read(characters: number): string; 82 83 /** 84 * Returns all characters from an input stream. 85 * Can only be used on a stream in reading mode; causes an error in writing or appending mode. 86 */ 87 ReadAll(): string; 88 89 /** 90 * Returns an entire line from an input stream. 91 * Although this method extracts the newline character, it does not add it to the returned string. 92 * Can only be used on a stream in reading mode; causes an error in writing or appending mode. 93 */ 94 ReadLine(): string; 95 96 /** 97 * Skips a specified number of characters when reading from an input text stream. 98 * Can only be used on a stream in reading mode; causes an error in writing or appending mode. 99 * @param characters Positive number of characters to skip forward. (Backward skipping is not supported.) 100 */ 101 Skip(characters: number): void; 102 103 /** 104 * Skips the next line when reading from an input text stream. 105 * Can only be used on a stream in reading mode, not writing or appending mode. 106 */ 107 SkipLine(): void; 108 109 /** 110 * Indicates whether the stream pointer position is at the end of a line. 111 */ 112 AtEndOfLine: boolean; 113 114 /** 115 * Indicates whether the stream pointer position is at the end of a stream. 116 */ 117 AtEndOfStream: boolean; 118} 119 120declare var WScript: { 121 /** 122 * Outputs text to either a message box (under WScript.exe) or the command console window followed by 123 * a newline (under CScript.exe). 124 */ 125 Echo(s: any): void; 126 127 /** 128 * Exposes the write-only error output stream for the current script. 129 * Can be accessed only while using CScript.exe. 130 */ 131 StdErr: TextStreamWriter; 132 133 /** 134 * Exposes the write-only output stream for the current script. 135 * Can be accessed only while using CScript.exe. 136 */ 137 StdOut: TextStreamWriter; 138 Arguments: { length: number; Item(n: number): string; }; 139 140 /** 141 * The full path of the currently running script. 142 */ 143 ScriptFullName: string; 144 145 /** 146 * Forces the script to stop immediately, with an optional exit code. 147 */ 148 Quit(exitCode?: number): number; 149 150 /** 151 * The Windows Script Host build version number. 152 */ 153 BuildVersion: number; 154 155 /** 156 * Fully qualified path of the host executable. 157 */ 158 FullName: string; 159 160 /** 161 * Gets/sets the script mode - interactive(true) or batch(false). 162 */ 163 Interactive: boolean; 164 165 /** 166 * The name of the host executable (WScript.exe or CScript.exe). 167 */ 168 Name: string; 169 170 /** 171 * Path of the directory containing the host executable. 172 */ 173 Path: string; 174 175 /** 176 * The filename of the currently running script. 177 */ 178 ScriptName: string; 179 180 /** 181 * Exposes the read-only input stream for the current script. 182 * Can be accessed only while using CScript.exe. 183 */ 184 StdIn: TextStreamReader; 185 186 /** 187 * Windows Script Host version 188 */ 189 Version: string; 190 191 /** 192 * Connects a COM object's event sources to functions named with a given prefix, in the form prefix_event. 193 */ 194 ConnectObject(objEventSource: any, strPrefix: string): void; 195 196 /** 197 * Creates a COM object. 198 * @param strProgiID 199 * @param strPrefix Function names in the form prefix_event will be bound to this object's COM events. 200 */ 201 CreateObject(strProgID: string, strPrefix?: string): any; 202 203 /** 204 * Disconnects a COM object from its event sources. 205 */ 206 DisconnectObject(obj: any): void; 207 208 /** 209 * Retrieves an existing object with the specified ProgID from memory, or creates a new one from a file. 210 * @param strPathname Fully qualified path to the file containing the object persisted to disk. 211 * For objects in memory, pass a zero-length string. 212 * @param strProgID 213 * @param strPrefix Function names in the form prefix_event will be bound to this object's COM events. 214 */ 215 GetObject(strPathname: string, strProgID?: string, strPrefix?: string): any; 216 217 /** 218 * Suspends script execution for a specified length of time, then continues execution. 219 * @param intTime Interval (in milliseconds) to suspend script execution. 220 */ 221 Sleep(intTime: number): void; 222}; 223 224/** 225 * WSH is an alias for WScript under Windows Script Host 226 */ 227declare var WSH: typeof WScript; 228 229/** 230 * Represents an Automation SAFEARRAY 231 */ 232declare class SafeArray<T = any> { 233 private constructor(); 234 private SafeArray_typekey: SafeArray<T>; 235} 236 237/** 238 * Allows enumerating over a COM collection, which may not have indexed item access. 239 */ 240interface Enumerator<T = any> { 241 /** 242 * Returns true if the current item is the last one in the collection, or the collection is empty, 243 * or the current item is undefined. 244 */ 245 atEnd(): boolean; 246 247 /** 248 * Returns the current item in the collection 249 */ 250 item(): T; 251 252 /** 253 * Resets the current item in the collection to the first item. If there are no items in the collection, 254 * the current item is set to undefined. 255 */ 256 moveFirst(): void; 257 258 /** 259 * Moves the current item to the next item in the collection. If the enumerator is at the end of 260 * the collection or the collection is empty, the current item is set to undefined. 261 */ 262 moveNext(): void; 263} 264 265interface EnumeratorConstructor { 266 new <T = any>(safearray: SafeArray<T>): Enumerator<T>; 267 new <T = any>(collection: { Item(index: any): T }): Enumerator<T>; 268 new <T = any>(collection: any): Enumerator<T>; 269} 270 271declare var Enumerator: EnumeratorConstructor; 272 273/** 274 * Enables reading from a COM safe array, which might have an alternate lower bound, or multiple dimensions. 275 */ 276interface VBArray<T = any> { 277 /** 278 * Returns the number of dimensions (1-based). 279 */ 280 dimensions(): number; 281 282 /** 283 * Takes an index for each dimension in the array, and returns the item at the corresponding location. 284 */ 285 getItem(dimension1Index: number, ...dimensionNIndexes: number[]): T; 286 287 /** 288 * Returns the smallest available index for a given dimension. 289 * @param dimension 1-based dimension (defaults to 1) 290 */ 291 lbound(dimension?: number): number; 292 293 /** 294 * Returns the largest available index for a given dimension. 295 * @param dimension 1-based dimension (defaults to 1) 296 */ 297 ubound(dimension?: number): number; 298 299 /** 300 * Returns a Javascript array with all the elements in the VBArray. If there are multiple dimensions, 301 * each successive dimension is appended to the end of the array. 302 * Example: [[1,2,3],[4,5,6]] becomes [1,2,3,4,5,6] 303 */ 304 toArray(): T[]; 305} 306 307interface VBArrayConstructor { 308 new <T = any>(safeArray: SafeArray<T>): VBArray<T>; 309} 310 311declare var VBArray: VBArrayConstructor; 312 313/** 314 * Automation date (VT_DATE) 315 */ 316declare class VarDate { 317 private constructor(); 318 private VarDate_typekey: VarDate; 319} 320 321interface DateConstructor { 322 new (vd: VarDate): Date; 323} 324 325interface Date { 326 getVarDate: () => VarDate; 327} 328