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