Author: akhaldi
Date: Sat Nov  8 10:27:05 2014
New Revision: 65316

URL: http://svn.reactos.org/svn/reactos?rev=65316&view=rev
Log:
[WSHOM_WINETEST]
* Import from Wine 1.7.27.
CORE-8768 CORE-8540

Added:
    trunk/rostests/winetests/wshom/   (with props)
    trunk/rostests/winetests/wshom/CMakeLists.txt   (with props)
    trunk/rostests/winetests/wshom/testlist.c   (with props)
    trunk/rostests/winetests/wshom/wshom.c   (with props)
    trunk/rostests/winetests/wshom/wshom.idl   (with props)
Modified:
    trunk/rostests/winetests/CMakeLists.txt

Modified: trunk/rostests/winetests/CMakeLists.txt
URL: 
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/CMakeLists.txt?rev=65316&r1=65315&r2=65316&view=diff
==============================================================================
--- trunk/rostests/winetests/CMakeLists.txt     [iso-8859-1] (original)
+++ trunk/rostests/winetests/CMakeLists.txt     [iso-8859-1] Sat Nov  8 
10:27:05 2014
@@ -114,6 +114,7 @@
 add_subdirectory(wlanapi)
 add_subdirectory(wldap32)
 add_subdirectory(ws2_32)
+add_subdirectory(wshom)
 add_subdirectory(xcopy)
 add_subdirectory(xinput1_3)
 add_subdirectory(xmllite)

Propchange: trunk/rostests/winetests/wshom/
------------------------------------------------------------------------------
--- bugtraq:logregex    (added)
+++ bugtraq:logregex    Sat Nov  8 10:27:05 2014
@@ -0,0 +1,2 @@
+([Ii]ssue|[Bb]ug)s? #?(\d+)(,? ?#?(\d+))*(,? ?(and |or )?#?(\d+))?
+(\d+)

Propchange: trunk/rostests/winetests/wshom/
------------------------------------------------------------------------------
    bugtraq:message = See issue #%BUGID% for more details.

Propchange: trunk/rostests/winetests/wshom/
------------------------------------------------------------------------------
    bugtraq:url = http://www.reactos.org/bugzilla/show_bug.cgi?id=%BUGID%

Added: trunk/rostests/winetests/wshom/CMakeLists.txt
URL: 
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/wshom/CMakeLists.txt?rev=65316
==============================================================================
--- trunk/rostests/winetests/wshom/CMakeLists.txt       (added)
+++ trunk/rostests/winetests/wshom/CMakeLists.txt       [iso-8859-1] Sat Nov  8 
10:27:05 2014
@@ -0,0 +1,8 @@
+
+add_definitions(-DUSE_WINE_TODOS)
+add_idl_headers(wshom_winetest_idlheaders wshom.idl)
+add_executable(wshom_winetest wshom.c testlist.c)
+set_module_type(wshom_winetest win32cui)
+add_importlibs(wshom_winetest oleaut32 ole32 msvcrt kernel32)
+add_dependencies(wshom_winetest stdole2 wshom_winetest_idlheaders)
+add_cd_file(TARGET wshom_winetest DESTINATION reactos/bin FOR all)

Propchange: trunk/rostests/winetests/wshom/CMakeLists.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Added: trunk/rostests/winetests/wshom/testlist.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/wshom/testlist.c?rev=65316
==============================================================================
--- trunk/rostests/winetests/wshom/testlist.c   (added)
+++ trunk/rostests/winetests/wshom/testlist.c   [iso-8859-1] Sat Nov  8 
10:27:05 2014
@@ -0,0 +1,12 @@
+/* Automatically generated by make depend; DO NOT EDIT!! */
+
+#define STANDALONE
+#include <wine/test.h>
+
+extern void func_wshom(void);
+
+const struct test winetest_testlist[] =
+{
+    { "wshom", func_wshom },
+    { 0, 0 }
+};

Propchange: trunk/rostests/winetests/wshom/testlist.c
------------------------------------------------------------------------------
    svn:eol-style = native

Added: trunk/rostests/winetests/wshom/wshom.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/wshom/wshom.c?rev=65316
==============================================================================
--- trunk/rostests/winetests/wshom/wshom.c      (added)
+++ trunk/rostests/winetests/wshom/wshom.c      [iso-8859-1] Sat Nov  8 
10:27:05 2014
@@ -0,0 +1,189 @@
+/*
+ * Copyright 2011 Jacek Caban for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#define WIN32_NO_STATUS
+#define _INC_WINDOWS
+#define COBJMACROS
+#define CONST_VTABLE
+
+#include <windef.h>
+#include <winbase.h>
+#include <initguid.h>
+#include <dispex.h>
+#include <wshom.h>
+#include <wine/test.h>
+
+DEFINE_GUID(GUID_NULL,0,0,0,0,0,0,0,0,0,0,0);
+
+#define EXPECT_HR(hr,hr_exp) \
+    ok(hr == hr_exp, "got 0x%08x, expected 0x%08x\n", hr, hr_exp)
+
+static void test_wshshell(void)
+{
+    static const WCHAR desktopW[] = {'D','e','s','k','t','o','p',0};
+    static const WCHAR lnk1W[] = {'f','i','l','e','.','l','n','k',0};
+    static const WCHAR pathW[] = {'%','P','A','T','H','%',0};
+    static const WCHAR sysW[] = {'S','Y','S','T','E','M',0};
+    static const WCHAR path2W[] = {'P','A','T','H',0};
+    IWshEnvironment *env;
+    IWshShell3 *sh3;
+    IDispatchEx *dispex;
+    IWshCollection *coll;
+    IDispatch *disp, *shortcut;
+    IUnknown *shell;
+    IFolderCollection *folders;
+    IWshShortcut *shcut;
+    ITypeInfo *ti;
+    HRESULT hr;
+    TYPEATTR *tattr;
+    DISPPARAMS dp;
+    EXCEPINFO ei;
+    VARIANT arg, res;
+    BSTR str, ret;
+    UINT err;
+
+    hr = CoCreateInstance(&CLSID_WshShell, NULL, 
CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
+            &IID_IDispatch, (void**)&disp);
+    if(FAILED(hr)) {
+        win_skip("Could not create WshShell object: %08x\n", hr);
+        return;
+    }
+
+    hr = IDispatch_QueryInterface(disp, &IID_IWshShell3, (void**)&shell);
+    EXPECT_HR(hr, S_OK);
+    IDispatch_Release(disp);
+
+    hr = IDispatch_QueryInterface(disp, &IID_IDispatchEx, (void**)&dispex);
+    EXPECT_HR(hr, E_NOINTERFACE);
+
+    hr = IUnknown_QueryInterface(shell, &IID_IWshShell3, (void**)&sh3);
+    EXPECT_HR(hr, S_OK);
+
+    hr = IWshShell3_get_SpecialFolders(sh3, &coll);
+    EXPECT_HR(hr, S_OK);
+
+    hr = IWshCollection_QueryInterface(coll, &IID_IFolderCollection, 
(void**)&folders);
+    EXPECT_HR(hr, E_NOINTERFACE);
+
+    hr = IWshCollection_QueryInterface(coll, &IID_IDispatch, (void**)&disp);
+    EXPECT_HR(hr, S_OK);
+
+    hr = IDispatch_GetTypeInfo(disp, 0, 0, &ti);
+    EXPECT_HR(hr, S_OK);
+
+    hr = ITypeInfo_GetTypeAttr(ti, &tattr);
+    EXPECT_HR(hr, S_OK);
+    ok(IsEqualIID(&tattr->guid, &IID_IWshCollection), "got wrong type guid\n");
+    ITypeInfo_ReleaseTypeAttr(ti, tattr);
+
+    /* try to call Item() with normal IDispatch procedure */
+    str = SysAllocString(desktopW);
+    V_VT(&arg) = VT_BSTR;
+    V_BSTR(&arg) = str;
+    dp.rgvarg = &arg;
+    dp.rgdispidNamedArgs = NULL;
+    dp.cArgs = 1;
+    dp.cNamedArgs = 0;
+    hr = IDispatch_Invoke(disp, DISPID_VALUE, &IID_NULL, 1033, 
DISPATCH_PROPERTYGET, &dp, &res, &ei, &err);
+    EXPECT_HR(hr, DISP_E_MEMBERNOTFOUND);
+
+    /* try Item() directly, it returns directory path apparently */
+    V_VT(&res) = VT_EMPTY;
+    hr = IWshCollection_Item(coll, &arg, &res);
+    EXPECT_HR(hr, S_OK);
+    ok(V_VT(&res) == VT_BSTR, "got res type %d\n", V_VT(&res));
+    SysFreeString(str);
+    VariantClear(&res);
+
+    /* CreateShortcut() */
+    str = SysAllocString(lnk1W);
+    hr = IWshShell3_CreateShortcut(sh3, str, &shortcut);
+    EXPECT_HR(hr, S_OK);
+    SysFreeString(str);
+    hr = IDispatch_QueryInterface(shortcut, &IID_IWshShortcut, (void**)&shcut);
+    EXPECT_HR(hr, S_OK);
+
+    hr = IWshShortcut_get_Arguments(shcut, NULL);
+    ok(hr == E_POINTER, "got 0x%08x\n", hr);
+
+    hr = IWshShortcut_get_IconLocation(shcut, NULL);
+    ok(hr == E_POINTER, "got 0x%08x\n", hr);
+
+    IWshShortcut_Release(shcut);
+    IDispatch_Release(shortcut);
+
+    /* ExpandEnvironmentStrings */
+    hr = IWshShell3_ExpandEnvironmentStrings(sh3, NULL, NULL);
+    ok(hr == E_POINTER, "got 0x%08x\n", hr);
+
+    str = SysAllocString(pathW);
+    hr = IWshShell3_ExpandEnvironmentStrings(sh3, str, NULL);
+    ok(hr == E_POINTER, "got 0x%08x\n", hr);
+    SysFreeString(str);
+
+    V_VT(&arg) = VT_BSTR;
+    V_BSTR(&arg) = SysAllocString(sysW);
+    hr = IWshShell3_get_Environment(sh3, &arg, &env);
+    ok(hr == S_OK, "got 0x%08x\n", hr);
+    VariantClear(&arg);
+
+    hr = IWshEnvironment_get_Item(env, NULL, NULL);
+    ok(hr == E_POINTER, "got 0x%08x\n", hr);
+
+    ret = (BSTR)0x1;
+    hr = IWshEnvironment_get_Item(env, NULL, &ret);
+    ok(hr == S_OK, "got 0x%08x\n", hr);
+    ok(ret && !*ret, "got %p\n", ret);
+    SysFreeString(ret);
+
+    /* invalid var name */
+    str = SysAllocString(lnk1W);
+    hr = IWshEnvironment_get_Item(env, str, NULL);
+    ok(hr == E_POINTER, "got 0x%08x\n", hr);
+
+    ret = NULL;
+    hr = IWshEnvironment_get_Item(env, str, &ret);
+    ok(hr == S_OK, "got 0x%08x\n", hr);
+    ok(ret && *ret == 0, "got %s\n", wine_dbgstr_w(ret));
+    SysFreeString(ret);
+    SysFreeString(str);
+
+    /* valid name */
+    str = SysAllocString(path2W);
+    hr = IWshEnvironment_get_Item(env, str, &ret);
+    ok(hr == S_OK, "got 0x%08x\n", hr);
+    ok(ret && *ret != 0, "got %s\n", wine_dbgstr_w(ret));
+    SysFreeString(ret);
+    SysFreeString(str);
+
+    IWshEnvironment_Release(env);
+
+    IWshCollection_Release(coll);
+    IDispatch_Release(disp);
+    IWshShell3_Release(sh3);
+    IUnknown_Release(shell);
+}
+
+START_TEST(wshom)
+{
+    CoInitialize(NULL);
+
+    test_wshshell();
+
+    CoUninitialize();
+}

Propchange: trunk/rostests/winetests/wshom/wshom.c
------------------------------------------------------------------------------
    svn:eol-style = native

Added: trunk/rostests/winetests/wshom/wshom.idl
URL: 
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/wshom/wshom.idl?rev=65316
==============================================================================
--- trunk/rostests/winetests/wshom/wshom.idl    (added)
+++ trunk/rostests/winetests/wshom/wshom.idl    [iso-8859-1] Sat Nov  8 
10:27:05 2014
@@ -0,0 +1,664 @@
+/*
+ * Copyright 2011 Jacek Caban for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "oaidl.idl";
+cpp_quote("#undef ExpandEnvironmentStrings")
+
+[
+    helpstring("Windows Script Host Object Model"),
+    uuid(f935dc20-1cf0-11d0-adb9-00c04fd58a0b),
+    version(1.0)
+]
+library IWshRuntimeLibrary
+{
+    importlib("stdole2.tlb");
+
+    typedef enum {
+        WshRunning  = 0,
+        WshFinished,
+        WshFailed
+    } WshExecStatus;
+
+    typedef enum {
+        UnknownType = 0,
+        Removable,
+        Fixed,
+        Remote,
+        CDRom,
+        RamDisk
+    } DriveTypeConst;
+
+    typedef enum {
+        Normal     = 0x000,
+        ReadOnly   = 0x001,
+        Hidden     = 0x002,
+        System     = 0x004,
+        Volume     = 0x008,
+        Directory  = 0x010,
+        Archive    = 0x020,
+        Alias      = 0x400,
+        Compressed = 0x800
+    } FileAttribute;
+
+    typedef enum {
+        ForReading   = 0x1,
+        ForWriting   = 0x2,
+        ForAppending = 0x8
+    } IOMode;
+
+    typedef enum {
+        TristateTrue       = -1,
+        TristateFalse      =  0,
+        TristateUseDefault = -2,
+        TristateMixed      = -2
+    } Tristate;
+
+    interface IFolder;
+    interface IFolderCollection;
+
+    [
+        uuid(53bad8c1-e718-11cf-893d-00a0c9054228),
+        odl,
+        hidden,
+        dual,
+        nonextensible,
+        oleautomation
+    ]
+    interface ITextStream : IDispatch {
+        [id(0x2710), propget]
+        HRESULT Line([out, retval] long* Line);
+
+        [id(0xfffffdef), propget]
+        HRESULT Column([out, retval] long* Column);
+
+        [id(0x2712), propget]
+        HRESULT AtEndOfStream([out, retval] VARIANT_BOOL* EOS);
+
+        [id(0x2713), propget]
+        HRESULT AtEndOfLine([out, retval] VARIANT_BOOL* EOL);
+
+        [id(0x2714)]
+        HRESULT Read([in] long Characters, [out, retval] BSTR* Text);
+
+        [id(0x2715)]
+        HRESULT ReadLine([out, retval] BSTR* Text);
+
+        [id(0x2716)]
+        HRESULT ReadAll([out, retval] BSTR* Text);
+
+        [id(0x2717)]
+        HRESULT Write([in] BSTR Text);
+
+        [id(0x2718)]
+        HRESULT WriteLine([in, defaultvalue("")] BSTR Text);
+
+        [id(0x2719)]
+        HRESULT WriteBlankLines([in] long Lines);
+
+        [id(0x271a)]
+        HRESULT Skip([in] long Characters);
+
+        [id(0x271b)]
+        HRESULT SkipLine();
+
+        [id(0x271c)]
+        HRESULT Close();
+    };
+
+    [
+        uuid(c7c3f5a0-88a3-11d0-abcb-00a0c90fffc0),
+        odl,
+        hidden,
+        dual,
+        nonextensible,
+        oleautomation
+    ]
+    interface IDrive : IDispatch {
+        [id(DISPID_VALUE), propget]
+        HRESULT Path([out, retval] BSTR* path);
+
+        [id(0x2710), propget]
+        HRESULT DriveLetter([out, retval] BSTR* letter);
+
+        [id(0x2711), propget]
+        HRESULT ShareName([out, retval] BSTR* ShareName);
+
+        [id(0x2712), propget]
+        HRESULT DriveType([out, retval] DriveTypeConst* type);
+
+        [id(0x2713), propget]
+        HRESULT RootFolder([out, retval] IFolder** folder);
+
+        [id(0x2715), propget]
+        HRESULT AvailableSpace([out, retval] VARIANT* Avail);
+
+        [id(0x2714), propget]
+        HRESULT FreeSpace([out, retval] VARIANT* pFree);
+
+        [id(0x2716), propget]
+        HRESULT TotalSize([out, retval] VARIANT* Total);
+
+        [id(0x2717), propget]
+        HRESULT VolumeName([out, retval] BSTR* Name);
+
+        [id(0x2717), propput]
+        HRESULT VolumeName([in] BSTR Name);
+
+        [id(0x2718), propget]
+        HRESULT FileSystem([out, retval] BSTR* pFileSystem);
+
+        [id(0x2719), propget]
+        HRESULT SerialNumber([out, retval] long* SerialNumber);
+
+        [id(0x271a), propget]
+        HRESULT IsReady([out, retval] VARIANT_BOOL* pfReady);
+    };
+
+    [
+        uuid(c7c3f5a4-88a3-11d0-abcb-00a0c90fffc0),
+        odl,
+        hidden,
+        dual,
+        nonextensible,
+        oleautomation
+    ]
+    interface IFile : IDispatch {
+        [id(DISPID_VALUE), propget]
+        HRESULT Path([out, retval] BSTR* path);
+
+        [id(0x03e8), propget]
+        HRESULT Name([out, retval] BSTR* Name);
+
+        [id(0x03e8), propput]
+        HRESULT Name([in] BSTR Name);
+
+        [id(0x03ea), propget]
+        HRESULT ShortPath([out, retval] BSTR* path);
+
+        [id(0x03e9), propget]
+        HRESULT ShortName([out, retval] BSTR* Name);
+
+        [id(0x03ec), propget]
+        HRESULT Drive([out, retval] IDrive** drive);
+
+        [id(0x03ed), propget]
+        HRESULT ParentFolder([out, retval] IFolder** folder);
+
+        [id(0x03eb), propget]
+        HRESULT Attributes([out, retval] FileAttribute* attr);
+
+        [id(0x03eb), propput]
+        HRESULT Attributes([in] FileAttribute attr);
+
+        [id(0x03ee), propget]
+        HRESULT DateCreated([out, retval] DATE* date);
+
+        [id(0x03ef), propget]
+        HRESULT DateLastModified([out, retval] DATE* date);
+
+        [id(0x03f0), propget]
+        HRESULT DateLastAccessed([out, retval] DATE* date);
+
+        [id(0x03f1), propget]
+        HRESULT Size([out, retval] VARIANT* Size);
+
+        [id(0x03f2), propget]
+        HRESULT Type([out, retval] BSTR* Type);
+
+        [id(0x04b0)]
+        HRESULT Delete([in, defaultvalue(0)] VARIANT_BOOL Force);
+
+        [id(0x04b2)]
+        HRESULT Copy(
+                    [in] BSTR Destination,
+                    [in, defaultvalue(-1)] VARIANT_BOOL OverWriteFiles);
+
+        [id(0x04b4)]
+        HRESULT Move([in] BSTR Destination);
+
+        [id(0x044c)]
+        HRESULT OpenAsTextStream(
+                    [in, defaultvalue(1)] IOMode IOMode,
+                    [in, defaultvalue(0)] Tristate Format,
+                    [out, retval] ITextStream** ppts);
+    };
+
+    [
+        uuid(c7c3f5a5-88a3-11d0-abcb-00a0c90fffc0),
+        odl,
+        hidden,
+        dual,
+        nonextensible,
+        oleautomation
+    ]
+    interface IFileCollection : IDispatch {
+        [id(DISPID_VALUE), propget]
+        HRESULT Item(
+                    [in] VARIANT Key,
+                    [out, retval] IFile** ppfile);
+        [id(DISPID_NEWENUM), propget, restricted, hidden]
+        HRESULT _NewEnum([out, retval] IUnknown** ppenum);
+        [id(1), propget]
+        HRESULT Count([out, retval] long* count);
+    };
+
+    [
+        uuid(c7c3f5a2-88a3-11d0-abcb-00a0c90fffc0),
+        odl,
+        hidden,
+        dual,
+        nonextensible,
+        oleautomation
+    ]
+    interface IFolder : IDispatch {
+        [id(DISPID_VALUE), propget]
+        HRESULT Path([out, retval] BSTR* path);
+
+        [id(0x03e8), propget]
+        HRESULT Name([out, retval] BSTR* name);
+
+        [id(0x03e8), propput]
+        HRESULT Name([in] BSTR name);
+
+        [id(0x03ea), propget]
+        HRESULT ShortPath([out, retval] BSTR* path);
+
+        [id(0x03e9), propget]
+        HRESULT ShortName([out, retval] BSTR* name);
+
+        [id(0x03ec), propget]
+        HRESULT Drive([out, retval] IDrive** drive);
+
+        [id(0x03ed), propget]
+        HRESULT ParentFolder([out, retval] IFolder** folder);
+
+        [id(0x03eb), propget]
+        HRESULT Attributes([out, retval] FileAttribute* attr);
+
+        [id(0x03eb), propput]
+        HRESULT Attributes([in] FileAttribute attr);
+
+        [id(0x03ee), propget]
+        HRESULT DateCreated([out, retval] DATE* date);
+
+        [id(0x03ef), propget]
+        HRESULT DateLastModified([out, retval] DATE* date);
+
+        [id(0x03f0), propget]
+        HRESULT DateLastAccessed([out, retval] DATE* date);
+
+        [id(0x03f2), propget]
+        HRESULT Type([out, retval] BSTR* type);
+
+        [id(0x04b1)]
+        HRESULT Delete([in, defaultvalue(0)] VARIANT_BOOL force);
+
+        [id(0x04b3)]
+        HRESULT Copy(
+                    [in] BSTR Destination,
+                    [in, defaultvalue(-1)] VARIANT_BOOL OverWriteFiles);
+
+        [id(0x04b5)]
+        HRESULT Move([in] BSTR Destination);
+
+        [id(0x2710), propget]
+        HRESULT IsRootFolder([out, retval] VARIANT_BOOL* root);
+
+        [id(0x03f1), propget]
+        HRESULT Size([out, retval] VARIANT* size);
+
+        [id(0x2711), propget]
+        HRESULT SubFolders([out, retval] IFolderCollection** folders);
+
+        [id(0x2712), propget]
+        HRESULT Files([out, retval] IFileCollection** files);
+
+        [id(0x044d)]
+        HRESULT CreateTextFile(
+                    [in] BSTR FileName,
+                    [in, defaultvalue(-1)] VARIANT_BOOL Overwrite,
+                    [in, defaultvalue(0)] VARIANT_BOOL Unicode,
+                    [out, retval] ITextStream** ppts);
+    };
+
+    [
+        uuid(c7c3f5a3-88a3-11d0-abcb-00a0c90fffc0),
+        odl,
+        hidden,
+        dual,
+        nonextensible,
+        oleautomation
+    ]
+    interface IFolderCollection : IDispatch {
+        [id(2)]
+        HRESULT Add(
+                    [in] BSTR Name,
+                    [out, retval] IFolder** folder);
+
+        [id(DISPID_VALUE), propget]
+        HRESULT Item(
+                    [in] VARIANT Key,
+                    [out, retval] IFolder** folder);
+
+        [id(DISPID_NEWENUM), propget, restricted, hidden]
+        HRESULT _NewEnum([out, retval] IUnknown** ppenum);
+
+        [id(1), propget]
+        HRESULT Count([out, retval] long* count);
+    };
+
+    [
+        uuid(f935dc27-1cf0-11d0-adb9-00c04fd58a0b),
+        odl,
+        dual,
+        oleautomation
+    ]
+    interface IWshCollection : IDispatch {
+        [id(DISPID_VALUE)]
+        HRESULT Item(
+                [in] VARIANT *Index,
+                [out, retval] VARIANT *out_Value);
+
+        [id(1)]
+        HRESULT Count([out, retval] long *out_Count);
+
+        [id(2), propget]
+        HRESULT length([out, retval] long *out_Count);
+
+        [id(DISPID_NEWENUM)]
+        HRESULT _NewEnum([out, retval] IUnknown *out_Enum);
+    }
+
+    [
+        uuid(f935dc29-1cf0-11d0-adb9-00c04fd58a0b),
+        odl,
+        dual,
+        oleautomation
+    ]
+    interface IWshEnvironment : IDispatch {
+        [id(DISPID_VALUE), propget]
+        HRESULT Item(
+                [in] BSTR Name,
+                [out, retval] BSTR *out_Value);
+
+        [id(DISPID_VALUE), propput]
+        HRESULT Item(
+                [in] BSTR Name,
+                [in] BSTR Value);
+
+        [id(1)]
+        HRESULT Count([out, retval] long *out_Count);
+
+        [id(2), propget]
+        HRESULT length([out, retval] long *out_Count);
+
+        [id(DISPID_NEWENUM)]
+        HRESULT _NewEnum([out, retval] IUnknown **out_Enum);
+
+        [id(0x03e9)]
+        HRESULT Remove([in] BSTR Name);
+    }
+
+    [
+        uuid(08fed190-be19-11d3-a28b-00104bd35090),
+        odl,
+        dual,
+        oleautomation
+    ]
+    interface IWshExec : IDispatch {
+        [id(0x0001), propget]
+        HRESULT Status([out, retval] WshExecStatus* Status);
+
+        [id(0x0003), propget]
+        HRESULT StdIn([out, retval] ITextStream** stream);
+
+        [id(0x0004), propget]
+        HRESULT StdOut([out, retval] ITextStream** stream);
+
+        [id(0x0005), propget]
+        HRESULT StdErr([out, retval] ITextStream** stream);
+
+        [id(0x0006), propget]
+        HRESULT ProcessID([out, retval] long* pid);
+
+        [id(0x0007), propget]
+        HRESULT ExitCode([out, retval] long* ExitCode);
+
+        [id(0x0008)]
+        HRESULT Terminate();
+    };
+
+    [
+        uuid(f935dc23-1cf0-11d0-adb9-00c04fd58a0b),
+        odl,
+        dual,
+        oleautomation
+    ]
+    interface IWshShortcut : IDispatch {
+        [id(DISPID_VALUE), propget]
+        HRESULT FullName([out, retval] BSTR* name);
+
+        [id(0x03e8), propget]
+        HRESULT Arguments([out, retval] BSTR* Arguments);
+
+        [id(0x03e8), propput]
+        HRESULT Arguments([in] BSTR Arguments);
+
+        [id(0x03e9), propget]
+        HRESULT Description([out, retval] BSTR* Description);
+
+        [id(0x03e9), propput]
+        HRESULT Description([in] BSTR Description);
+
+        [id(0x03ea), propget]
+        HRESULT Hotkey([out, retval] BSTR* HotKey);
+
+        [id(0x03ea), propput]
+        HRESULT Hotkey([in] BSTR HotKey);
+
+        [id(0x03eb), propget]
+        HRESULT IconLocation([out, retval] BSTR* IconPath);
+
+        [id(0x03eb), propput]
+        HRESULT IconLocation([in] BSTR IconPath);
+
+        [id(0x03ec), propput]
+        HRESULT RelativePath([in] BSTR rhs);
+
+        [id(0x03ed), propget]
+        HRESULT TargetPath([out, retval] BSTR* Path);
+
+        [id(0x03ed), propput]
+        HRESULT TargetPath([in] BSTR Path);
+
+        [id(0x03ee), propget]
+        HRESULT WindowStyle([out, retval] int* ShowCmd);
+
+        [id(0x03ee), propput]
+        HRESULT WindowStyle([in] int ShowCmd);
+
+        [id(0x03ef), propget]
+        HRESULT WorkingDirectory([out, retval] BSTR* WorkingDirectory);
+
+        [id(0x03ef), propput]
+        HRESULT WorkingDirectory([in] BSTR WorkingDirectory);
+
+        [id(0x07d0), hidden]
+        HRESULT Load([in] BSTR PathLink);
+
+        [id(0x07d1)]
+        HRESULT Save();
+    };
+
+    [
+        uuid(f935dc21-1cf0-11d0-adb9-00c04fd58a0b),
+        odl,
+        dual,
+        oleautomation,
+        hidden
+    ]
+    interface IWshShell : IDispatch {
+        [id(0x0064), propget]
+        HRESULT SpecialFolders([out, retval] IWshCollection** out_Folders);
+
+        [id(0x00c8), propget]
+        HRESULT Environment(
+            [in, optional] VARIANT* Type,
+            [out, retval] IWshEnvironment** out_Env);
+
+        [id(0x03e8)]
+        HRESULT Run(
+            [in] BSTR Command,
+            [in, optional] VARIANT* WindowStyle,
+            [in, optional] VARIANT* WaitOnReturn,
+            [out, retval] int* out_ExitCode);
+
+        [id(0x03e9)]
+        HRESULT Popup(
+            [in] BSTR Text,
+            [in, optional] VARIANT* SecondsToWait,
+            [in, optional] VARIANT* Title,
+            [in, optional] VARIANT* Type,
+            [out, retval] int* out_Button);
+
+        [id(0x03ea)]
+        HRESULT CreateShortcut(
+            [in] BSTR PathLink,
+            [out, retval] IDispatch** out_Shortcut);
+
+        [id(0x03ee)]
+        HRESULT ExpandEnvironmentStrings(
+            [in] BSTR Src,
+            [out, retval] BSTR* out_Dst);
+
+        [id(0x07d0)]
+        HRESULT RegRead(
+            [in] BSTR Name,
+            [out, retval] VARIANT* out_Value);
+
+        [id(0x07d1)]
+        HRESULT RegWrite(
+            [in] BSTR Name,
+            [in] VARIANT* Value,
+            [in, optional] VARIANT* Type);
+
+        [id(0x07d2)]
+        HRESULT RegDelete([in] BSTR Name);
+    };
+
+    [
+      uuid(24be5a30-edfe-11d2-b933-00104b365c9f),
+      odl,
+      dual,
+      oleautomation,
+      hidden
+    ]
+    interface IWshShell2 : IWshShell {
+        [id(0x0bb8)]
+        HRESULT LogEvent(
+            [in] VARIANT* Type,
+            [in] BSTR Message,
+            [in, defaultvalue("")] BSTR Target,
+            [out, retval] VARIANT_BOOL* out_Success);
+
+        [id(0x0bc2)]
+        HRESULT AppActivate(
+            [in] VARIANT* App,
+            [in, optional] VARIANT* Wait,
+            [out, retval] VARIANT_BOOL* out_Success);
+
+        [id(0x0bc3)]
+        HRESULT SendKeys(
+            [in] BSTR Keys,
+            [in, optional] VARIANT* Wait);
+    };
+
+    [
+        uuid(41904400-be18-11d3-a28b-00104bd35090),
+        odl,
+        dual,
+        oleautomation
+    ]
+    interface IWshShell3 : IWshShell2 {
+        [id(0x0bc4)]
+        HRESULT Exec(
+            [in] BSTR Command,
+            [out, retval] IWshExec** out_Exec);
+
+        [id(0x0bc5), propget]
+        HRESULT CurrentDirectory([out, retval] BSTR* out_Directory);
+
+        [id(0x0bc5), propput]
+        HRESULT CurrentDirectory([in] BSTR out_Directory);
+    };
+
+    [
+        uuid(24be5a31-edfe-11d2-b933-00104b365c9f),
+        odl,
+        dual,
+        oleautomation
+    ]
+    interface IWshNetwork2 : IDispatch {
+        [id(0x60020000), propget]
+        HRESULT UserDomain([out, retval] BSTR *out_UserDomain);
+    }
+
+    [
+        helpstring("Windows Script Host Shell Object"),
+        uuid(f935dc22-1cf0-11d0-adb9-00c04fd58a0b),
+        threading(apartment),
+        progid("WScript.Shell.1"),
+        vi_progid("WScript.Shell")
+    ]
+    coclass IWshShell_Class {
+        [default] interface IWshShell3;
+    }
+
+    [
+        helpstring("Windows Script Host Shell Object"),
+        uuid(72c24dd5-d70a-438b-8a42-98424b88afb8),
+        threading(apartment),
+        progid("WScript.Shell.1"),
+        vi_progid("WScript.Shell")
+    ]
+    coclass WshShell {
+        [default] interface IWshShell3;
+    }
+
+    [
+        helpstring("Windows Script Host Network Object"),
+        uuid(f935dc26-1cf0-11d0-adb9-00c04fd58a0b),
+        threading(apartment),
+        progid("WScript.Network.1"),
+        vi_progid("WScript.Network")
+    ]
+    coclass IWshNetwork_Class {
+        [default] interface IWshNetwork2;
+    }
+
+    [
+        helpstring("Windows Script Host Network Object"),
+        uuid(093ff999-1ea0-4079-9525-9614c3504b74),
+        threading(apartment),
+        progid("WScript.Network.1"),
+        vi_progid("WScript.Network")
+    ]
+    coclass WshNetwork {
+        [default] interface IWshNetwork2;
+    }
+}

Propchange: trunk/rostests/winetests/wshom/wshom.idl
------------------------------------------------------------------------------
    svn:eol-style = native


Reply via email to