1/* 2 * Copyright (C) 2012 Alistair Leslie-Hughes 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2.1 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 17 */ 18 19#pragma makedep header 20 21import "unknwn.idl"; 22import "objidl.idl"; 23import "oaidl.idl"; 24 25cpp_quote("#ifdef WINE_NO_UNICODE_MACROS") 26cpp_quote("#undef CopyFile") 27cpp_quote("#undef DeleteFile") 28cpp_quote("#undef MoveFile") 29cpp_quote("#endif") 30/* this is not defined in public headers */ 31cpp_quote("#define CTL_E_ENDOFFILE STD_CTL_SCODE(62)") 32cpp_quote("#define CTL_E_KEY_ALREADY_EXISTS STD_CTL_SCODE(457)") 33cpp_quote("#define CTL_E_ELEMENT_NOT_FOUND STD_CTL_SCODE(32811)") 34 35[ 36 uuid(420B2830-E718-11CF-893D-00A0C9054228), 37 version(1.0) 38] 39library Scripting 40{ 41 importlib("stdole2.tlb"); 42 43 interface IFolder; 44 45 typedef enum CompareMethod 46 { 47 BinaryCompare, 48 TextCompare, 49 DatabaseCompare 50 } CompareMethod; 51 52 typedef enum IOMode 53 { 54 ForReading = 1, 55 ForWriting = 2, 56 ForAppending = 8 57 } IOMode; 58 59 typedef enum Tristate 60 { 61 TristateTrue = -1, 62 TristateFalse = 0, 63 TristateUseDefault = -2, 64 TristateMixed = -2 65 } Tristate; 66 67 typedef enum FileAttribute 68 { 69 Normal = 0, 70 ReadOnly = 1, 71 Hidden = 2, 72 System = 4, 73 Volume = 8, 74 Directory = 16, 75 Archive = 32, 76 Alias = 1024, 77 Compressed = 2048 78 } FileAttribute; 79 80 typedef enum SpecialFolderConst 81 { 82 WindowsFolder, 83 SystemFolder, 84 TemporaryFolder 85 } SpecialFolderConst; 86 87 typedef enum DriveTypeConst 88 { 89 UnknownType, 90 Removable, 91 Fixed, 92 Remote, 93 CDRom, 94 RamDisk 95 } DriveTypeConst; 96 97 typedef enum StandardStreamTypes 98 { 99 StdIn, 100 StdOut, 101 StdErr 102 } StandardStreamTypes; 103 104 [ 105 odl, 106 uuid(42C642C1-97E1-11CF-978F-00A02463E06F), 107 hidden, 108 dual, 109 oleautomation 110 ] 111 interface IDictionary : IDispatch 112 { 113 [id(DISPID_VALUE), propputref] 114 HRESULT Item([in] VARIANT* Key, [in] VARIANT* pRetItem); 115 116 [id(DISPID_VALUE), propput] 117 HRESULT Item([in] VARIANT* Key, [in] VARIANT* pRetItem); 118 119 [id(DISPID_VALUE), propget] 120 HRESULT Item([in] VARIANT* Key, [out, retval] VARIANT* pRetItem); 121 122 [id(0x00000001)] 123 HRESULT Add([in] VARIANT* Key, [in] VARIANT* Item); 124 125 [id(0x00000002), propget] 126 HRESULT Count([out, retval] long* pCount); 127 128 [id(0x00000003)] 129 HRESULT Exists([in] VARIANT* Key, [out, retval] VARIANT_BOOL* pExists); 130 131 [id(0x00000004)] 132 HRESULT Items([out, retval] VARIANT* pItemsArray); 133 134 [id(0x00000005), propput] 135 HRESULT Key([in] VARIANT* Key, [in] VARIANT* rhs); 136 137 [id(0x00000006)] 138 HRESULT Keys([out, retval] VARIANT* pKeysArray); 139 140 [id(0x00000007)] 141 HRESULT Remove([in] VARIANT* Key); 142 143 [id(0x00000008)] 144 HRESULT RemoveAll(); 145 146 [id(0x00000009), propput] 147 HRESULT CompareMode([in] CompareMethod pcomp); 148 149 [id(0x00000009), propget] 150 HRESULT CompareMode([out, retval] CompareMethod* pcomp); 151 152 [id(DISPID_NEWENUM), restricted] 153 HRESULT _NewEnum([out, retval] IUnknown** ppunk); 154 155 [id(0x0000000a), propget, hidden] 156 HRESULT HashVal([in] VARIANT* Key, [out, retval] VARIANT* HashVal); 157 } 158 159 [ 160 odl, 161 uuid(C7C3F5A0-88A3-11D0-ABCB-00A0C90FFFC0), 162 hidden, 163 dual, 164 nonextensible, 165 oleautomation 166 ] 167 interface IDrive : IDispatch 168 { 169 [id(DISPID_VALUE), propget] 170 HRESULT Path([out, retval] BSTR* pbstrPath); 171 172 [id(0x00002710), propget] 173 HRESULT DriveLetter([out, retval] BSTR* pbstrLetter); 174 175 [id(0x00002711), propget] 176 HRESULT ShareName([out, retval] BSTR* pbstrShareName); 177 178 [id(0x00002712), propget] 179 HRESULT DriveType([out, retval] DriveTypeConst* pdt); 180 181 [id(0x00002713), propget] 182 HRESULT RootFolder([out, retval] IFolder** ppfolder); 183 184 [id(0x00002715), propget] 185 HRESULT AvailableSpace([out, retval] VARIANT* pvarAvail); 186 187 [id(0x00002714), propget] 188 HRESULT FreeSpace([out, retval] VARIANT* pvarFree); 189 190 [id(0x00002716), propget] 191 HRESULT TotalSize([out, retval] VARIANT* pvarTotal); 192 193 [id(0x00002717), propget] 194 HRESULT VolumeName([out, retval] BSTR* pbstrName); 195 196 [id(0x00002717), propput] 197 HRESULT VolumeName([in] BSTR pbstrName); 198 199 [id(0x00002718), propget] 200 HRESULT FileSystem([out, retval] BSTR* pbstrFileSystem); 201 202 [id(0x00002719), propget] 203 HRESULT SerialNumber([out, retval] long* pulSerialNumber); 204 205 [id(0x0000271a), propget] 206 HRESULT IsReady([out, retval] VARIANT_BOOL* pfReady); 207 } 208 209 [ 210 odl, 211 uuid(C7C3F5A1-88A3-11D0-ABCB-00A0C90FFFC0), 212 hidden, 213 dual, 214 nonextensible, 215 oleautomation 216 ] 217 interface IDriveCollection : IDispatch { 218 [id(DISPID_VALUE), propget] 219 HRESULT Item([in] VARIANT Key, [out, retval] IDrive** ppdrive); 220 221 [id(DISPID_NEWENUM), propget, restricted, hidden] 222 HRESULT _NewEnum([out, retval] IUnknown** ppenum); 223 224 [id(0x00000001), propget] 225 HRESULT Count([out, retval] long* plCount); 226 } 227 228 [ 229 odl, 230 uuid(53BAD8C1-E718-11CF-893D-00A0C9054228), 231 hidden, 232 dual, 233 nonextensible, 234 oleautomation 235 ] 236 interface ITextStream : IDispatch 237 { 238 [id(0x00002710), propget] 239 HRESULT Line([out, retval] long* Line); 240 241 [id(0xfffffdef), propget] 242 HRESULT Column([out, retval] long* Column); 243 244 [id(0x00002712), propget] 245 HRESULT AtEndOfStream([out, retval] VARIANT_BOOL* EOS); 246 247 [id(0x00002713), propget] 248 HRESULT AtEndOfLine([out, retval] VARIANT_BOOL* EOL); 249 250 [id(0x00002714)] 251 HRESULT Read([in] long Characters, [out, retval] BSTR* Text); 252 253 [id(0x00002715)] 254 HRESULT ReadLine([out, retval] BSTR* Text); 255 256 [id(0x00002716)] 257 HRESULT ReadAll([out, retval] BSTR* Text); 258 259 [id(0x00002717)] 260 HRESULT Write([in] BSTR Text); 261 262 [id(0x00002718)] 263 HRESULT WriteLine([in, defaultvalue("")] BSTR Text); 264 265 [id(0x00002719)] 266 HRESULT WriteBlankLines([in] long Lines); 267 268 [id(0x0000271a)] 269 HRESULT Skip([in] long Characters); 270 271 [id(0x0000271b)] 272 HRESULT SkipLine(); 273 274 [id(0x0000271c)] 275 HRESULT Close(); 276 } 277 278 [ 279 odl, 280 uuid(C7C3F5A4-88A3-11D0-ABCB-00A0C90FFFC0), 281 hidden, 282 dual, 283 nonextensible, 284 oleautomation 285 ] 286 interface IFile : IDispatch 287 { 288 [id(DISPID_VALUE), propget] 289 HRESULT Path([out, retval] BSTR* pbstrPath); 290 291 [id(0x000003e8), propget] 292 HRESULT Name([out, retval] BSTR* pbstrName); 293 294 [id(0x000003e8), propput] 295 HRESULT Name([in] BSTR pbstrName); 296 297 [id(0x000003ea), propget] 298 HRESULT ShortPath([out, retval] BSTR* pbstrPath); 299 300 [id(0x000003e9), propget] 301 HRESULT ShortName([out, retval] BSTR* pbstrName); 302 303 [id(0x000003ec), propget] 304 HRESULT Drive([out, retval] IDrive** ppdrive); 305 306 [id(0x000003ed), propget] 307 HRESULT ParentFolder([out, retval] IFolder** ppfolder); 308 309 [id(0x000003eb), propget] 310 HRESULT Attributes([out, retval] FileAttribute* pfa); 311 312 [id(0x000003eb), propput] 313 HRESULT Attributes([in] FileAttribute pfa); 314 315 [id(0x000003ee), propget] 316 HRESULT DateCreated([out, retval] DATE* pdate); 317 318 [id(0x000003ef), propget] 319 HRESULT DateLastModified([out, retval] DATE* pdate); 320 321 [id(0x000003f0), propget] 322 HRESULT DateLastAccessed([out, retval] DATE* pdate); 323 324 [id(0x000003f1), propget] 325 HRESULT Size([out, retval] VARIANT* pvarSize); 326 327 [id(0x000003f2), propget] 328 HRESULT Type([out, retval] BSTR* pbstrType); 329 330 [id(0x000004b0)] 331 HRESULT Delete([in, defaultvalue(0)] VARIANT_BOOL Force); 332 333 [id(0x000004b2)] 334 HRESULT Copy([in] BSTR Destination, [in, defaultvalue(-1)] VARIANT_BOOL OverWriteFiles); 335 336 [id(0x000004b4)] 337 HRESULT Move([in] BSTR Destination); 338 339 [id(0x0000044c)] 340 HRESULT OpenAsTextStream([in, defaultvalue(1)] IOMode IOMode, 341 [in, defaultvalue(0)] Tristate Format, [out, retval] ITextStream** ppts); 342 } 343 344 [ 345 odl, 346 uuid(0AB5A3D0-E5B6-11D0-ABF5-00A0C90FFFC0), 347 hidden, 348 dual, 349 nonextensible, 350 oleautomation 351 ] 352 interface IFileSystem : IDispatch 353 { 354 [id(0x0000271a), propget] 355 HRESULT Drives([out, retval] IDriveCollection** ppdrives); 356 357 [id(0x00002710)] 358 HRESULT BuildPath([in] BSTR Path, [in] BSTR Name, [out, retval] BSTR* pbstrResult); 359 360 [id(0x00002714)] 361 HRESULT GetDriveName([in] BSTR Path, [out, retval] BSTR* pbstrResult); 362 363 [id(0x00002715)] 364 HRESULT GetParentFolderName([in] BSTR Path, [out, retval] BSTR* pbstrResult); 365 366 [id(0x00002716)] 367 HRESULT GetFileName([in] BSTR Path, [out, retval] BSTR* pbstrResult); 368 369 [id(0x00002717)] 370 HRESULT GetBaseName([in] BSTR Path, [out, retval] BSTR* pbstrResult); 371 372 [id(0x00002718)] 373 HRESULT GetExtensionName([in] BSTR Path, [out, retval] BSTR* pbstrResult); 374 375 [id(0x00002712)] 376 HRESULT GetAbsolutePathName([in] BSTR Path, [out, retval] BSTR* pbstrResult); 377 378 [id(0x00002713)] 379 HRESULT GetTempName([out, retval] BSTR* pbstrResult); 380 381 [id(0x0000271f)] 382 HRESULT DriveExists([in] BSTR DriveSpec, [out, retval] VARIANT_BOOL* pfExists); 383 384 [id(0x00002720)] 385 HRESULT FileExists([in] BSTR FileSpec, [out, retval] VARIANT_BOOL* pfExists); 386 387 [id(0x00002721)] 388 HRESULT FolderExists([in] BSTR FolderSpec, [out, retval] VARIANT_BOOL* pfExists); 389 390 [id(0x0000271b)] 391 HRESULT GetDrive([in] BSTR DriveSpec, [out, retval] IDrive** ppdrive); 392 393 [id(0x0000271c)] 394 HRESULT GetFile([in] BSTR FilePath, [out, retval] IFile** ppfile); 395 396 [id(0x0000271d)] 397 HRESULT GetFolder([in] BSTR FolderPath, [out, retval] IFolder** ppfolder); 398 399 [id(0x0000271e)] 400 HRESULT GetSpecialFolder([in] SpecialFolderConst SpecialFolder, [out, retval] IFolder** ppfolder); 401 402 [id(0x000004b0)] 403 HRESULT DeleteFile([in] BSTR FileSpec, [in, defaultvalue(0)] VARIANT_BOOL Force); 404 405 [id(0x000004b1)] 406 HRESULT DeleteFolder([in] BSTR FolderSpec, [in, defaultvalue(0)] VARIANT_BOOL Force); 407 408 [id(0x000004b4), helpstring("Move a file"), helpcontext(0x00214bab)] 409 HRESULT MoveFile([in] BSTR Source, [in] BSTR Destination); 410 411 [id(0x000004b5)] 412 HRESULT MoveFolder([in] BSTR Source, [in] BSTR Destination); 413 414 [id(0x000004b2)] 415 HRESULT CopyFile([in] BSTR Source, [in] BSTR Destination, 416 [in, defaultvalue(-1)] VARIANT_BOOL OverWriteFiles); 417 418 [id(0x000004b3)] 419 HRESULT CopyFolder([in] BSTR Source, [in] BSTR Destination, 420 [in, defaultvalue(-1)] VARIANT_BOOL OverWriteFiles); 421 422 [id(0x00000460)] 423 HRESULT CreateFolder([in] BSTR Path, [out, retval] IFolder** ppfolder); 424 425 [id(0x0000044d)] 426 HRESULT CreateTextFile([in] BSTR FileName, [in, defaultvalue(-1)] VARIANT_BOOL Overwrite, 427 [in, defaultvalue(0)] VARIANT_BOOL Unicode, [out, retval] ITextStream** ppts); 428 429 [id(0x0000044c)] 430 HRESULT OpenTextFile([in] BSTR FileName, [in, defaultvalue(1)] IOMode IOMode, 431 [in, defaultvalue(0)] VARIANT_BOOL Create, 432 [in, defaultvalue(0)] Tristate Format, 433 [out, retval] ITextStream** ppts); 434 } 435 436 [ 437 odl, 438 uuid(C7C3F5A5-88A3-11D0-ABCB-00A0C90FFFC0), 439 hidden, 440 dual, 441 nonextensible, 442 oleautomation 443 ] 444 interface IFileCollection : IDispatch 445 { 446 [id(DISPID_VALUE), propget] 447 HRESULT Item([in] VARIANT Key, [out, retval] IFile** ppfile); 448 449 [id(DISPID_NEWENUM), propget, restricted, hidden] 450 HRESULT _NewEnum([out, retval] IUnknown** ppenum); 451 452 [id(0x00000001), propget] 453 HRESULT Count([out, retval] long* plCount); 454 } 455 456 [ 457 odl, 458 uuid(C7C3F5A3-88A3-11D0-ABCB-00A0C90FFFC0), 459 hidden, 460 dual, 461 nonextensible, 462 oleautomation 463 ] 464 interface IFolderCollection : IDispatch 465 { 466 [id(0x00000002)] 467 HRESULT Add([in] BSTR Name, [out, retval] IFolder** ppfolder); 468 469 [id(DISPID_VALUE), propget] 470 HRESULT Item([in] VARIANT Key, [out, retval] IFolder** ppfolder); 471 472 [id(DISPID_NEWENUM), propget, restricted, hidden] 473 HRESULT _NewEnum([out, retval] IUnknown** ppenum); 474 475 [id(0x00000001), propget] 476 HRESULT Count([out, retval] long* plCount); 477 } 478 479 [ 480 odl, 481 uuid(C7C3F5A2-88A3-11D0-ABCB-00A0C90FFFC0), 482 hidden, 483 dual, 484 nonextensible, 485 oleautomation 486 ] 487 interface IFolder : IDispatch 488 { 489 [id(DISPID_VALUE), propget] 490 HRESULT Path([out, retval] BSTR* pbstrPath); 491 492 [id(0x000003e8), propget] 493 HRESULT Name([out, retval] BSTR* pbstrName); 494 495 [id(0x000003e8), propput] 496 HRESULT Name([in] BSTR pbstrName); 497 498 [id(0x000003ea), propget] 499 HRESULT ShortPath([out, retval] BSTR* pbstrPath); 500 501 [id(0x000003e9), propget] 502 HRESULT ShortName([out, retval] BSTR* pbstrName); 503 504 [id(0x000003ec), propget] 505 HRESULT Drive([out, retval] IDrive** ppdrive); 506 507 [id(0x000003ed), propget] 508 HRESULT ParentFolder([out, retval] IFolder** ppfolder); 509 510 [id(0x000003eb), propget] 511 HRESULT Attributes([out, retval] FileAttribute* pfa); 512 513 [id(0x000003eb), propput] 514 HRESULT Attributes([in] FileAttribute pfa); 515 516 [id(0x000003ee), propget] 517 HRESULT DateCreated([out, retval] DATE* pdate); 518 519 [id(0x000003ef), propget] 520 HRESULT DateLastModified([out, retval] DATE* pdate); 521 522 [id(0x000003f0), propget] 523 HRESULT DateLastAccessed([out, retval] DATE* pdate); 524 525 [id(0x000003f2), propget] 526 HRESULT Type([out, retval] BSTR* pbstrType); 527 528 [id(0x000004b1)] 529 HRESULT Delete([in, defaultvalue(0)] VARIANT_BOOL Force); 530 531 [id(0x000004b3)] 532 HRESULT Copy([in] BSTR Destination, [in, defaultvalue(-1)] VARIANT_BOOL OverWriteFiles); 533 534 [id(0x000004b5)] 535 HRESULT Move([in] BSTR Destination); 536 537 [id(0x00002710), propget] 538 HRESULT IsRootFolder([out, retval] VARIANT_BOOL* pfRootFolder); 539 540 [id(0x000003f1), propget] 541 HRESULT Size([out, retval] VARIANT* pvarSize); 542 543 [id(0x00002711), propget] 544 HRESULT SubFolders([out, retval] IFolderCollection** ppfolders); 545 546 [id(0x00002712), propget] 547 HRESULT Files([out, retval] IFileCollection** ppfiles); 548 549 [id(0x0000044d)] 550 HRESULT CreateTextFile([in] BSTR FileName, [in, defaultvalue(-1)] VARIANT_BOOL Overwrite, 551 [in, defaultvalue(0)] VARIANT_BOOL Unicode, [out, retval] ITextStream** ppts); 552 } 553 554 [ 555 odl, 556 uuid(2A0B9D10-4B87-11D3-A97A-00104B365C9F), 557 dual, 558 nonextensible, 559 oleautomation 560 ] 561 interface IFileSystem3 : IFileSystem 562 { 563 [id(0x00004e20)] 564 HRESULT GetStandardStream([in] StandardStreamTypes StandardStreamType, 565 [in, defaultvalue(0)] VARIANT_BOOL Unicode, [out, retval] ITextStream** ppts); 566 567 [id(0x00004e2a)] 568 HRESULT GetFileVersion([in] BSTR FileName, [out, retval] BSTR* FileVersion); 569 } 570 571 [ 572 odl, 573 uuid(AADC65F6-CFF1-11D1-B747-00C04FC2B085), 574 dual, 575 oleautomation 576 ] 577 interface IScriptEncoder : IDispatch 578 { 579 [id(DISPID_VALUE)] 580 HRESULT EncodeScriptFile([in] BSTR szExt, [in] BSTR bstrStreamIn, [in] long cFlags, 581 [in] BSTR bstrDefaultLang, [out, retval] BSTR* pbstrStreamOut); 582 } 583 584 [ 585 uuid(EE09B103-97E0-11CF-978F-00A02463E06F), 586 version(1.0), 587 helpstring("Scripting.Dictionary"), 588 threading(apartment), 589 progid("Scripting.Dictionary") 590 ] 591 coclass Dictionary 592 { 593 [default] interface IDictionary; 594 } 595 596 [ 597 uuid(0D43FE01-F093-11CF-8940-00A0C9054228), 598 version(1.0), 599 helpstring("FileSystem Object"), 600 threading(both), 601 progid("Scripting.FileSystemObject") 602 ] 603 coclass FileSystemObject 604 { 605 [default] interface IFileSystem3; 606 } 607 608 [ 609 uuid(C7C3F5B1-88A3-11D0-ABCB-00A0C90FFFC0), 610 noncreatable, 611 version(1.0) 612 ] 613 coclass Drive 614 { 615 [default] interface IDrive; 616 } 617 618 [ 619 uuid(C7C3F5B2-88A3-11D0-ABCB-00A0C90FFFC0), 620 noncreatable, 621 version(1.0) 622 ] 623 coclass Drives 624 { 625 [default] interface IDriveCollection; 626 } 627 628 [ 629 uuid(C7C3F5B3-88A3-11D0-ABCB-00A0C90FFFC0), 630 noncreatable, 631 version(1.0) 632 ] 633 coclass Folder 634 { 635 [default] interface IFolder; 636 } 637 638 [ 639 uuid(C7C3F5B4-88A3-11D0-ABCB-00A0C90FFFC0), 640 noncreatable, 641 version(1.0) 642 ] 643 coclass Folders 644 { 645 [default] interface IFolderCollection; 646 } 647 648 [ 649 uuid(C7C3F5B5-88A3-11D0-ABCB-00A0C90FFFC0), 650 noncreatable, 651 version(1.0) 652 ] 653 coclass File 654 { 655 [default] interface IFile; 656 } 657 658 [ 659 uuid(C7C3F5B6-88A3-11D0-ABCB-00A0C90FFFC0), 660 noncreatable, 661 version(1.0) 662 ] 663 coclass Files 664 { 665 [default] interface IFileCollection; 666 } 667 668 [ 669 uuid(0BB02EC0-EF49-11CF-8940-00A0C9054228), 670 noncreatable, 671 version(1.0) 672 ] 673 coclass TextStream 674 { 675 [default] interface ITextStream; 676 } 677 678 [ 679 uuid(32DA2B15-CFED-11D1-B747-00C04FC2B085), 680 version(1.0), 681 helpstring("Script Encoder Object"), 682 threading(apartment), 683 progid("Scripting.Encoder") 684 ] 685 coclass Encoder 686 { 687 [default] interface IScriptEncoder; 688 } 689} 690