Author: akhaldi Date: Sat Nov 8 10:22:22 2014 New Revision: 65315
URL: http://svn.reactos.org/svn/reactos?rev=65315&view=rev Log: [WSHOM.OCX] * Import from Wine 1.7.27. CORE-8768 #resolve #comment Imported in r65315. CORE-8540
Added: trunk/reactos/dll/win32/wshom.ocx/ (with props) trunk/reactos/dll/win32/wshom.ocx/CMakeLists.txt (with props) trunk/reactos/dll/win32/wshom.ocx/guid.c (with props) trunk/reactos/dll/win32/wshom.ocx/shell.c (with props) trunk/reactos/dll/win32/wshom.ocx/wshom.idl (with props) trunk/reactos/dll/win32/wshom.ocx/wshom.ocx.spec (with props) trunk/reactos/dll/win32/wshom.ocx/wshom.rc (with props) trunk/reactos/dll/win32/wshom.ocx/wshom.rgs (with props) trunk/reactos/dll/win32/wshom.ocx/wshom.tlb.rgs (with props) trunk/reactos/dll/win32/wshom.ocx/wshom_main.c (with props) trunk/reactos/dll/win32/wshom.ocx/wshom_private.h (with props) Modified: trunk/reactos/dll/win32/CMakeLists.txt trunk/reactos/media/doc/README.WINE trunk/reactos/media/inf/syssetup.inf
Modified: trunk/reactos/dll/win32/CMakeLists.txt URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/CMakeLists.txt?re... ============================================================================== --- trunk/reactos/dll/win32/CMakeLists.txt [iso-8859-1] (original) +++ trunk/reactos/dll/win32/CMakeLists.txt [iso-8859-1] Sat Nov 8 10:22:22 2014 @@ -243,6 +243,7 @@ add_subdirectory(ws2_32_new) add_subdirectory(ws2help) add_subdirectory(wshirda) +add_subdirectory(wshom.ocx) add_subdirectory(wshtcpip) add_subdirectory(wsock32) add_subdirectory(wtsapi32)
Propchange: trunk/reactos/dll/win32/wshom.ocx/ ------------------------------------------------------------------------------ --- bugtraq:logregex (added) +++ bugtraq:logregex Sat Nov 8 10:22:22 2014 @@ -0,0 +1,2 @@ +([Ii]ssue|[Bb]ug)s? #?(\d+)(,? ?#?(\d+))*(,? ?(and |or )?#?(\d+))? +(\d+)
Propchange: trunk/reactos/dll/win32/wshom.ocx/ ------------------------------------------------------------------------------ bugtraq:message = See issue #%BUGID% for more details.
Propchange: trunk/reactos/dll/win32/wshom.ocx/ ------------------------------------------------------------------------------ bugtraq:url = http://www.reactos.org/bugzilla/show_bug.cgi?id=%BUGID%
Propchange: trunk/reactos/dll/win32/wshom.ocx/ ------------------------------------------------------------------------------ tsvn:logminsize = 10
Added: trunk/reactos/dll/win32/wshom.ocx/CMakeLists.txt URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/wshom.ocx/CMakeLi... ============================================================================== --- trunk/reactos/dll/win32/wshom.ocx/CMakeLists.txt (added) +++ trunk/reactos/dll/win32/wshom.ocx/CMakeLists.txt [iso-8859-1] Sat Nov 8 10:22:22 2014 @@ -0,0 +1,30 @@ + +add_definitions(-D__WINESRC__) +include_directories(${REACTOS_SOURCE_DIR}/include/reactos/wine) +spec2def(wshom.ocx wshom.ocx.spec) +add_idl_headers(wshom_idlheader wshom.idl) +add_typelib(wshom.idl) + +list(APPEND SOURCE + shell.c + wshom_main.c + wshom_private.h) + +add_library(wshom SHARED + ${SOURCE} + guid.c + wshom.rc + ${CMAKE_CURRENT_BINARY_DIR}/wshom.def) + +list(APPEND wshom_rc_deps + ${CMAKE_CURRENT_SOURCE_DIR}/wshom.rgs + ${CMAKE_CURRENT_SOURCE_DIR}/wshom.tlb.rgs + ${CMAKE_CURRENT_BINARY_DIR}/wshom.tlb) + +set_source_files_properties(wshom.rc PROPERTIES OBJECT_DEPENDS "${wshom_rc_deps}") +set_module_type(wshom win32ocx) +target_link_libraries(wshom uuid wine) +add_importlibs(wshom oleaut32 ole32 shell32 msvcrt kernel32 ntdll) +add_dependencies(wshom stdole2 wshom_idlheader) +add_pch(wshom wshom_private.h SOURCE) +add_cd_file(TARGET wshom DESTINATION reactos/system32 FOR all)
Propchange: trunk/reactos/dll/win32/wshom.ocx/CMakeLists.txt ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/win32/wshom.ocx/guid.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/wshom.ocx/guid.c?... ============================================================================== --- trunk/reactos/dll/win32/wshom.ocx/guid.c (added) +++ trunk/reactos/dll/win32/wshom.ocx/guid.c [iso-8859-1] Sat Nov 8 10:22:22 2014 @@ -0,0 +1,15 @@ +/* DO NOT USE THE PRECOMPILED HEADER FOR THIS FILE! */ + +#include <stdarg.h> + +#define WIN32_NO_STATUS +#define _INC_WINDOWS +#define COM_NO_WINDOWS_H + +#include <windef.h> +#include <winbase.h> +#include <objbase.h> +#include <initguid.h> +#include <wshom.h> + +/* NO CODE HERE, THIS IS JUST REQUIRED FOR THE GUID DEFINITIONS */
Propchange: trunk/reactos/dll/win32/wshom.ocx/guid.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/win32/wshom.ocx/shell.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/wshom.ocx/shell.c... ============================================================================== --- trunk/reactos/dll/win32/wshom.ocx/shell.c (added) +++ trunk/reactos/dll/win32/wshom.ocx/shell.c [iso-8859-1] Sat Nov 8 10:22:22 2014 @@ -0,0 +1,1069 @@ +/* + * 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 + */ + +#include "wshom_private.h" + +#include <shellapi.h> +#include <shlobj.h> +#include <dispex.h> + +#include <wine/unicode.h> + +static IWshShell3 WshShell3; + +typedef struct +{ + IWshCollection IWshCollection_iface; + LONG ref; +} WshCollection; + +typedef struct +{ + IWshShortcut IWshShortcut_iface; + LONG ref; + + IShellLinkW *link; + BSTR path_link; +} WshShortcut; + +typedef struct +{ + IWshEnvironment IWshEnvironment_iface; + LONG ref; +} WshEnvironment; + +static inline WshCollection *impl_from_IWshCollection( IWshCollection *iface ) +{ + return CONTAINING_RECORD(iface, WshCollection, IWshCollection_iface); +} + +static inline WshShortcut *impl_from_IWshShortcut( IWshShortcut *iface ) +{ + return CONTAINING_RECORD(iface, WshShortcut, IWshShortcut_iface); +} + +static inline WshEnvironment *impl_from_IWshEnvironment( IWshEnvironment *iface ) +{ + return CONTAINING_RECORD(iface, WshEnvironment, IWshEnvironment_iface); +} + +static HRESULT WINAPI WshEnvironment_QueryInterface(IWshEnvironment *iface, REFIID riid, void **obj) +{ + WshEnvironment *This = impl_from_IWshEnvironment(iface); + + TRACE("(%p)->(%s, %p)\n", This, debugstr_guid(riid), obj); + + if (IsEqualGUID(riid, &IID_IUnknown) || + IsEqualGUID(riid, &IID_IDispatch) || + IsEqualGUID(riid, &IID_IWshEnvironment)) + { + *obj = iface; + }else { + FIXME("Unknown iface %s\n", debugstr_guid(riid)); + *obj = NULL; + return E_NOINTERFACE; + } + + IUnknown_AddRef((IUnknown*)*obj); + return S_OK; +} + +static ULONG WINAPI WshEnvironment_AddRef(IWshEnvironment *iface) +{ + WshEnvironment *This = impl_from_IWshEnvironment(iface); + LONG ref = InterlockedIncrement(&This->ref); + TRACE("(%p) ref = %d\n", This, ref); + return ref; +} + +static ULONG WINAPI WshEnvironment_Release(IWshEnvironment *iface) +{ + WshEnvironment *This = impl_from_IWshEnvironment(iface); + LONG ref = InterlockedDecrement(&This->ref); + TRACE("(%p) ref = %d\n", This, ref); + + if (!ref) + HeapFree(GetProcessHeap(), 0, This); + + return ref; +} + +static HRESULT WINAPI WshEnvironment_GetTypeInfoCount(IWshEnvironment *iface, UINT *pctinfo) +{ + WshEnvironment *This = impl_from_IWshEnvironment(iface); + TRACE("(%p)->(%p)\n", This, pctinfo); + *pctinfo = 1; + return S_OK; +} + +static HRESULT WINAPI WshEnvironment_GetTypeInfo(IWshEnvironment *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo) +{ + WshEnvironment *This = impl_from_IWshEnvironment(iface); + TRACE("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo); + return get_typeinfo(IWshEnvironment_tid, ppTInfo); +} + +static HRESULT WINAPI WshEnvironment_GetIDsOfNames(IWshEnvironment *iface, REFIID riid, LPOLESTR *rgszNames, + UINT cNames, LCID lcid, DISPID *rgDispId) +{ + WshEnvironment *This = impl_from_IWshEnvironment(iface); + ITypeInfo *typeinfo; + HRESULT hr; + + TRACE("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames, lcid, rgDispId); + + hr = get_typeinfo(IWshEnvironment_tid, &typeinfo); + if(SUCCEEDED(hr)) + { + hr = ITypeInfo_GetIDsOfNames(typeinfo, rgszNames, cNames, rgDispId); + ITypeInfo_Release(typeinfo); + } + + return hr; +} + +static HRESULT WINAPI WshEnvironment_Invoke(IWshEnvironment *iface, DISPID dispIdMember, REFIID riid, LCID lcid, + WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) +{ + WshEnvironment *This = impl_from_IWshEnvironment(iface); + ITypeInfo *typeinfo; + HRESULT hr; + + TRACE("(%p)->(%d %s %d %d %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid), + lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); + + hr = get_typeinfo(IWshEnvironment_tid, &typeinfo); + if(SUCCEEDED(hr)) + { + hr = ITypeInfo_Invoke(typeinfo, &This->IWshEnvironment_iface, dispIdMember, wFlags, + pDispParams, pVarResult, pExcepInfo, puArgErr); + ITypeInfo_Release(typeinfo); + } + + return hr; +} + +static HRESULT WINAPI WshEnvironment_get_Item(IWshEnvironment *iface, BSTR name, BSTR *value) +{ + WshEnvironment *This = impl_from_IWshEnvironment(iface); + DWORD len; + + TRACE("(%p)->(%s %p)\n", This, debugstr_w(name), value); + + if (!value) + return E_POINTER; + + len = GetEnvironmentVariableW(name, NULL, 0); + *value = SysAllocStringLen(NULL, len); + if (!*value) + return E_OUTOFMEMORY; + + if (len) + GetEnvironmentVariableW(name, *value, len+1); + + return S_OK; +} + +static HRESULT WINAPI WshEnvironment_put_Item(IWshEnvironment *iface, BSTR name, BSTR value) +{ + WshEnvironment *This = impl_from_IWshEnvironment(iface); + FIXME("(%p)->(%s %s): stub\n", This, debugstr_w(name), debugstr_w(value)); + return E_NOTIMPL; +} + +static HRESULT WINAPI WshEnvironment_Count(IWshEnvironment *iface, LONG *count) +{ + WshEnvironment *This = impl_from_IWshEnvironment(iface); + FIXME("(%p)->(%p): stub\n", This, count); + return E_NOTIMPL; +} + +static HRESULT WINAPI WshEnvironment_get_length(IWshEnvironment *iface, LONG *len) +{ + WshEnvironment *This = impl_from_IWshEnvironment(iface); + FIXME("(%p)->(%p): stub\n", This, len); + return E_NOTIMPL; +} + +static HRESULT WINAPI WshEnvironment__NewEnum(IWshEnvironment *iface, IUnknown **penum) +{ + WshEnvironment *This = impl_from_IWshEnvironment(iface); + FIXME("(%p)->(%p): stub\n", This, penum); + return E_NOTIMPL; +} + +static HRESULT WINAPI WshEnvironment_Remove(IWshEnvironment *iface, BSTR name) +{ + WshEnvironment *This = impl_from_IWshEnvironment(iface); + FIXME("(%p)->(%s): stub\n", This, debugstr_w(name)); + return E_NOTIMPL; +} + +static const IWshEnvironmentVtbl WshEnvironmentVtbl = { + WshEnvironment_QueryInterface, + WshEnvironment_AddRef, + WshEnvironment_Release, + WshEnvironment_GetTypeInfoCount, + WshEnvironment_GetTypeInfo, + WshEnvironment_GetIDsOfNames, + WshEnvironment_Invoke, + WshEnvironment_get_Item, + WshEnvironment_put_Item, + WshEnvironment_Count, + WshEnvironment_get_length, + WshEnvironment__NewEnum, + WshEnvironment_Remove +}; + +static HRESULT WshEnvironment_Create(IWshEnvironment **env) +{ + WshEnvironment *This; + + This = HeapAlloc(GetProcessHeap(), 0, sizeof(*This)); + if (!This) return E_OUTOFMEMORY; + + This->IWshEnvironment_iface.lpVtbl = &WshEnvironmentVtbl; + This->ref = 1; + + *env = &This->IWshEnvironment_iface; + + return S_OK; +} + +static HRESULT WINAPI WshCollection_QueryInterface(IWshCollection *iface, REFIID riid, void **ppv) +{ + WshCollection *This = impl_from_IWshCollection(iface); + + TRACE("(%p)->(%s, %p)\n", This, debugstr_guid(riid), ppv); + + if (IsEqualGUID(riid, &IID_IUnknown) || + IsEqualGUID(riid, &IID_IDispatch) || + IsEqualGUID(riid, &IID_IWshCollection)) + { + *ppv = iface; + }else { + FIXME("Unknown iface %s\n", debugstr_guid(riid)); + *ppv = NULL; + return E_NOINTERFACE; + } + + IUnknown_AddRef((IUnknown*)*ppv); + return S_OK; +} + +static ULONG WINAPI WshCollection_AddRef(IWshCollection *iface) +{ + WshCollection *This = impl_from_IWshCollection(iface); + LONG ref = InterlockedIncrement(&This->ref); + TRACE("(%p) ref = %d\n", This, ref); + return ref; +} + +static ULONG WINAPI WshCollection_Release(IWshCollection *iface) +{ + WshCollection *This = impl_from_IWshCollection(iface); + LONG ref = InterlockedDecrement(&This->ref); + TRACE("(%p) ref = %d\n", This, ref); + + if (!ref) + HeapFree(GetProcessHeap(), 0, This); + + return ref; +} + +static HRESULT WINAPI WshCollection_GetTypeInfoCount(IWshCollection *iface, UINT *pctinfo) +{ + WshCollection *This = impl_from_IWshCollection(iface); + TRACE("(%p)->(%p)\n", This, pctinfo); + *pctinfo = 1; + return S_OK; +} + +static HRESULT WINAPI WshCollection_GetTypeInfo(IWshCollection *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo) +{ + WshCollection *This = impl_from_IWshCollection(iface); + TRACE("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo); + return get_typeinfo(IWshCollection_tid, ppTInfo); +} + +static HRESULT WINAPI WshCollection_GetIDsOfNames(IWshCollection *iface, REFIID riid, LPOLESTR *rgszNames, + UINT cNames, LCID lcid, DISPID *rgDispId) +{ + WshCollection *This = impl_from_IWshCollection(iface); + ITypeInfo *typeinfo; + HRESULT hr; + + TRACE("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames, lcid, rgDispId); + + hr = get_typeinfo(IWshCollection_tid, &typeinfo); + if(SUCCEEDED(hr)) + { + hr = ITypeInfo_GetIDsOfNames(typeinfo, rgszNames, cNames, rgDispId); + ITypeInfo_Release(typeinfo); + } + + return hr; +} + +static HRESULT WINAPI WshCollection_Invoke(IWshCollection *iface, DISPID dispIdMember, REFIID riid, LCID lcid, + WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) +{ + WshCollection *This = impl_from_IWshCollection(iface); + ITypeInfo *typeinfo; + HRESULT hr; + + TRACE("(%p)->(%d %s %d %d %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid), + lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); + + hr = get_typeinfo(IWshCollection_tid, &typeinfo); + if(SUCCEEDED(hr)) + { + hr = ITypeInfo_Invoke(typeinfo, &This->IWshCollection_iface, dispIdMember, wFlags, + pDispParams, pVarResult, pExcepInfo, puArgErr); + ITypeInfo_Release(typeinfo); + } + + return hr; +} + +static HRESULT WINAPI WshCollection_Item(IWshCollection *iface, VARIANT *index, VARIANT *value) +{ + WshCollection *This = impl_from_IWshCollection(iface); + static const WCHAR allusersdesktopW[] = {'A','l','l','U','s','e','r','s','D','e','s','k','t','o','p',0}; + static const WCHAR allusersprogramsW[] = {'A','l','l','U','s','e','r','s','P','r','o','g','r','a','m','s',0}; + static const WCHAR desktopW[] = {'D','e','s','k','t','o','p',0}; + PIDLIST_ABSOLUTE pidl; + WCHAR pathW[MAX_PATH]; + int kind = 0; + BSTR folder; + HRESULT hr; + + TRACE("(%p)->(%s %p)\n", This, debugstr_variant(index), value); + + if (V_VT(index) != VT_BSTR) + { + FIXME("only BSTR index supported, got %d\n", V_VT(index)); + return E_NOTIMPL; + } + + folder = V_BSTR(index); + if (!strcmpiW(folder, desktopW)) + kind = CSIDL_DESKTOP; + else if (!strcmpiW(folder, allusersdesktopW)) + kind = CSIDL_COMMON_DESKTOPDIRECTORY; + else if (!strcmpiW(folder, allusersprogramsW)) + kind = CSIDL_COMMON_PROGRAMS; + else + { + FIXME("folder kind %s not supported\n", debugstr_w(folder)); + return E_NOTIMPL; + } + + hr = SHGetSpecialFolderLocation(NULL, kind, &pidl); + if (hr != S_OK) return hr; + + if (SHGetPathFromIDListW(pidl, pathW)) + { + V_VT(value) = VT_BSTR; + V_BSTR(value) = SysAllocString(pathW); + hr = V_BSTR(value) ? S_OK : E_OUTOFMEMORY; + } + else + hr = E_FAIL; + + CoTaskMemFree(pidl); + + return hr; +} + +static HRESULT WINAPI WshCollection_Count(IWshCollection *iface, LONG *count) +{ + WshCollection *This = impl_from_IWshCollection(iface); + FIXME("(%p)->(%p): stub\n", This, count); + return E_NOTIMPL; +} + +static HRESULT WINAPI WshCollection_get_length(IWshCollection *iface, LONG *count) +{ + WshCollection *This = impl_from_IWshCollection(iface); + FIXME("(%p)->(%p): stub\n", This, count); + return E_NOTIMPL; +} + +static HRESULT WINAPI WshCollection__NewEnum(IWshCollection *iface, IUnknown *Enum) +{ + WshCollection *This = impl_from_IWshCollection(iface); + FIXME("(%p)->(%p): stub\n", This, Enum); + return E_NOTIMPL; +} + +static const IWshCollectionVtbl WshCollectionVtbl = { + WshCollection_QueryInterface, + WshCollection_AddRef, + WshCollection_Release, + WshCollection_GetTypeInfoCount, + WshCollection_GetTypeInfo, + WshCollection_GetIDsOfNames, + WshCollection_Invoke, + WshCollection_Item, + WshCollection_Count, + WshCollection_get_length, + WshCollection__NewEnum +}; + +static HRESULT WshCollection_Create(IWshCollection **collection) +{ + WshCollection *This; + + This = HeapAlloc(GetProcessHeap(), 0, sizeof(*This)); + if (!This) return E_OUTOFMEMORY; + + This->IWshCollection_iface.lpVtbl = &WshCollectionVtbl; + This->ref = 1; + + *collection = &This->IWshCollection_iface; + + return S_OK; +} + +/* IWshShortcut */ +static HRESULT WINAPI WshShortcut_QueryInterface(IWshShortcut *iface, REFIID riid, void **ppv) +{ + WshShortcut *This = impl_from_IWshShortcut(iface); + + TRACE("(%p)->(%s, %p)\n", This, debugstr_guid(riid), ppv); + + if (IsEqualGUID(riid, &IID_IUnknown) || + IsEqualGUID(riid, &IID_IDispatch) || + IsEqualGUID(riid, &IID_IWshShortcut)) + { + *ppv = iface; + }else { + FIXME("Unknown iface %s\n", debugstr_guid(riid)); + *ppv = NULL; + return E_NOINTERFACE; + } + + IUnknown_AddRef((IUnknown*)*ppv); + return S_OK; +} + +static ULONG WINAPI WshShortcut_AddRef(IWshShortcut *iface) +{ + WshShortcut *This = impl_from_IWshShortcut(iface); + LONG ref = InterlockedIncrement(&This->ref); + TRACE("(%p) ref = %d\n", This, ref); + return ref; +} + +static ULONG WINAPI WshShortcut_Release(IWshShortcut *iface) +{ + WshShortcut *This = impl_from_IWshShortcut(iface); + LONG ref = InterlockedDecrement(&This->ref); + TRACE("(%p) ref = %d\n", This, ref); + + if (!ref) + { + SysFreeString(This->path_link); + IShellLinkW_Release(This->link); + HeapFree(GetProcessHeap(), 0, This); + } + + return ref; +} + +static HRESULT WINAPI WshShortcut_GetTypeInfoCount(IWshShortcut *iface, UINT *pctinfo) +{ + WshShortcut *This = impl_from_IWshShortcut(iface); + TRACE("(%p)->(%p)\n", This, pctinfo); + *pctinfo = 1; + return S_OK; +} + +static HRESULT WINAPI WshShortcut_GetTypeInfo(IWshShortcut *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo) +{ + WshShortcut *This = impl_from_IWshShortcut(iface); + TRACE("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo); + return get_typeinfo(IWshShortcut_tid, ppTInfo); +} + +static HRESULT WINAPI WshShortcut_GetIDsOfNames(IWshShortcut *iface, REFIID riid, LPOLESTR *rgszNames, + UINT cNames, LCID lcid, DISPID *rgDispId) +{ + WshShortcut *This = impl_from_IWshShortcut(iface); + ITypeInfo *typeinfo; + HRESULT hr; + + TRACE("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames, lcid, rgDispId); + + hr = get_typeinfo(IWshShortcut_tid, &typeinfo); + if(SUCCEEDED(hr)) + { + hr = ITypeInfo_GetIDsOfNames(typeinfo, rgszNames, cNames, rgDispId); + ITypeInfo_Release(typeinfo); + } + + return hr; +} + +static HRESULT WINAPI WshShortcut_Invoke(IWshShortcut *iface, DISPID dispIdMember, REFIID riid, LCID lcid, + WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) +{ + WshShortcut *This = impl_from_IWshShortcut(iface); + ITypeInfo *typeinfo; + HRESULT hr; + + TRACE("(%p)->(%d %s %d %d %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid), + lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); + + hr = get_typeinfo(IWshShortcut_tid, &typeinfo); + if(SUCCEEDED(hr)) + { + hr = ITypeInfo_Invoke(typeinfo, &This->IWshShortcut_iface, dispIdMember, wFlags, + pDispParams, pVarResult, pExcepInfo, puArgErr); + ITypeInfo_Release(typeinfo); + } + + return hr; +} + +static HRESULT WINAPI WshShortcut_get_FullName(IWshShortcut *iface, BSTR *name) +{ + WshShortcut *This = impl_from_IWshShortcut(iface); + FIXME("(%p)->(%p): stub\n", This, name); + return E_NOTIMPL; +} + +static HRESULT WINAPI WshShortcut_get_Arguments(IWshShortcut *iface, BSTR *Arguments) +{ + WshShortcut *This = impl_from_IWshShortcut(iface); + WCHAR buffW[INFOTIPSIZE]; + HRESULT hr; + + TRACE("(%p)->(%p)\n", This, Arguments); + + if (!Arguments) + return E_POINTER; + + *Arguments = NULL; + + hr = IShellLinkW_GetArguments(This->link, buffW, sizeof(buffW)/sizeof(WCHAR)); + if (FAILED(hr)) + return hr; + + *Arguments = SysAllocString(buffW); + return *Arguments ? S_OK : E_OUTOFMEMORY; +} + +static HRESULT WINAPI WshShortcut_put_Arguments(IWshShortcut *iface, BSTR Arguments) +{ + WshShortcut *This = impl_from_IWshShortcut(iface); + + TRACE("(%p)->(%s)\n", This, debugstr_w(Arguments)); + + return IShellLinkW_SetArguments(This->link, Arguments); +} + +static HRESULT WINAPI WshShortcut_get_Description(IWshShortcut *iface, BSTR *Description) +{ + WshShortcut *This = impl_from_IWshShortcut(iface); + FIXME("(%p)->(%p): stub\n", This, Description); + return E_NOTIMPL; +} + +static HRESULT WINAPI WshShortcut_put_Description(IWshShortcut *iface, BSTR Description) +{ + WshShortcut *This = impl_from_IWshShortcut(iface); + TRACE("(%p)->(%s)\n", This, debugstr_w(Description)); + return IShellLinkW_SetDescription(This->link, Description); +} + +static HRESULT WINAPI WshShortcut_get_Hotkey(IWshShortcut *iface, BSTR *Hotkey) +{ + WshShortcut *This = impl_from_IWshShortcut(iface); + FIXME("(%p)->(%p): stub\n", This, Hotkey); + return E_NOTIMPL; +} + +static HRESULT WINAPI WshShortcut_put_Hotkey(IWshShortcut *iface, BSTR Hotkey) +{ + WshShortcut *This = impl_from_IWshShortcut(iface); + FIXME("(%p)->(%s): stub\n", This, debugstr_w(Hotkey)); + return E_NOTIMPL; +} + +static HRESULT WINAPI WshShortcut_get_IconLocation(IWshShortcut *iface, BSTR *IconPath) +{ + static const WCHAR fmtW[] = {'%','s',',',' ','%','d',0}; + WshShortcut *This = impl_from_IWshShortcut(iface); + WCHAR buffW[MAX_PATH], pathW[MAX_PATH]; + INT icon = 0; + HRESULT hr; + + TRACE("(%p)->(%p)\n", This, IconPath); + + if (!IconPath) + return E_POINTER; + + hr = IShellLinkW_GetIconLocation(This->link, buffW, sizeof(buffW)/sizeof(WCHAR), &icon); + if (FAILED(hr)) return hr; + + sprintfW(pathW, fmtW, buffW, icon); + *IconPath = SysAllocString(pathW); + if (!*IconPath) return E_OUTOFMEMORY; + + return S_OK; +} + +static HRESULT WINAPI WshShortcut_put_IconLocation(IWshShortcut *iface, BSTR IconPath) +{ + WshShortcut *This = impl_from_IWshShortcut(iface); + HRESULT hr; + WCHAR *ptr; + BSTR path; + INT icon; + + TRACE("(%p)->(%s)\n", This, debugstr_w(IconPath)); + + /* scan for icon id */ + ptr = strrchrW(IconPath, ','); + if (!ptr) + { + WARN("icon index not found\n"); + return E_FAIL; + } + + path = SysAllocStringLen(IconPath, ptr-IconPath); + + /* skip spaces if any */ + while (isspaceW(*++ptr)) + ; + + icon = atoiW(ptr); + + hr = IShellLinkW_SetIconLocation(This->link, path, icon); + SysFreeString(path); + + return hr; +} + +static HRESULT WINAPI WshShortcut_put_RelativePath(IWshShortcut *iface, BSTR rhs) +{ + WshShortcut *This = impl_from_IWshShortcut(iface); + FIXME("(%p)->(%s): stub\n", This, debugstr_w(rhs)); + return E_NOTIMPL; +} + +static HRESULT WINAPI WshShortcut_get_TargetPath(IWshShortcut *iface, BSTR *Path) +{ + WshShortcut *This = impl_from_IWshShortcut(iface); + FIXME("(%p)->(%p): stub\n", This, Path); + return E_NOTIMPL; +} + +static HRESULT WINAPI WshShortcut_put_TargetPath(IWshShortcut *iface, BSTR Path) +{ + WshShortcut *This = impl_from_IWshShortcut(iface); + TRACE("(%p)->(%s)\n", This, debugstr_w(Path)); + return IShellLinkW_SetPath(This->link, Path); +} + +static HRESULT WINAPI WshShortcut_get_WindowStyle(IWshShortcut *iface, int *ShowCmd) +{ + WshShortcut *This = impl_from_IWshShortcut(iface); + TRACE("(%p)->(%p)\n", This, ShowCmd); + return IShellLinkW_GetShowCmd(This->link, ShowCmd); +} + +static HRESULT WINAPI WshShortcut_put_WindowStyle(IWshShortcut *iface, int ShowCmd) +{ + WshShortcut *This = impl_from_IWshShortcut(iface); + TRACE("(%p)->(%d)\n", This, ShowCmd); + return IShellLinkW_SetShowCmd(This->link, ShowCmd); +} + +static HRESULT WINAPI WshShortcut_get_WorkingDirectory(IWshShortcut *iface, BSTR *WorkingDirectory) +{ + WshShortcut *This = impl_from_IWshShortcut(iface); + WCHAR buffW[MAX_PATH]; + HRESULT hr; + + TRACE("(%p)->(%p)\n", This, WorkingDirectory); + + if (!WorkingDirectory) + return E_POINTER; + + *WorkingDirectory = NULL; + hr = IShellLinkW_GetWorkingDirectory(This->link, buffW, sizeof(buffW)/sizeof(WCHAR)); + if (FAILED(hr)) return hr; + + *WorkingDirectory = SysAllocString(buffW); + return *WorkingDirectory ? S_OK : E_OUTOFMEMORY; +} + +static HRESULT WINAPI WshShortcut_put_WorkingDirectory(IWshShortcut *iface, BSTR WorkingDirectory) +{ + WshShortcut *This = impl_from_IWshShortcut(iface); + TRACE("(%p)->(%s)\n", This, debugstr_w(WorkingDirectory)); + return IShellLinkW_SetWorkingDirectory(This->link, WorkingDirectory); +} + +static HRESULT WINAPI WshShortcut_Load(IWshShortcut *iface, BSTR PathLink) +{ + WshShortcut *This = impl_from_IWshShortcut(iface); + FIXME("(%p)->(%s): stub\n", This, debugstr_w(PathLink)); + return E_NOTIMPL; +} + +static HRESULT WINAPI WshShortcut_Save(IWshShortcut *iface) +{ + WshShortcut *This = impl_from_IWshShortcut(iface); + IPersistFile *file; + HRESULT hr; + + TRACE("(%p)\n", This); + + IShellLinkW_QueryInterface(This->link, &IID_IPersistFile, (void**)&file); + hr = IPersistFile_Save(file, This->path_link, TRUE); + IPersistFile_Release(file); + + return hr; +} + +static const IWshShortcutVtbl WshShortcutVtbl = { + WshShortcut_QueryInterface, + WshShortcut_AddRef, + WshShortcut_Release, + WshShortcut_GetTypeInfoCount, + WshShortcut_GetTypeInfo, + WshShortcut_GetIDsOfNames, + WshShortcut_Invoke, + WshShortcut_get_FullName, + WshShortcut_get_Arguments, + WshShortcut_put_Arguments, + WshShortcut_get_Description, + WshShortcut_put_Description, + WshShortcut_get_Hotkey, + WshShortcut_put_Hotkey, + WshShortcut_get_IconLocation, + WshShortcut_put_IconLocation, + WshShortcut_put_RelativePath, + WshShortcut_get_TargetPath, + WshShortcut_put_TargetPath, + WshShortcut_get_WindowStyle, + WshShortcut_put_WindowStyle, + WshShortcut_get_WorkingDirectory, + WshShortcut_put_WorkingDirectory, + WshShortcut_Load, + WshShortcut_Save +}; + +static HRESULT WshShortcut_Create(const WCHAR *path, IDispatch **shortcut) +{ + WshShortcut *This; + HRESULT hr; + + *shortcut = NULL; + + This = HeapAlloc(GetProcessHeap(), 0, sizeof(*This)); + if (!This) return E_OUTOFMEMORY; + + This->IWshShortcut_iface.lpVtbl = &WshShortcutVtbl; + This->ref = 1; + + hr = CoCreateInstance(&CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, + &IID_IShellLinkW, (void**)&This->link); + if (FAILED(hr)) + { + HeapFree(GetProcessHeap(), 0, This); + return hr; + } + + This->path_link = SysAllocString(path); + if (!This->path_link) + { + IShellLinkW_Release(This->link); + HeapFree(GetProcessHeap(), 0, This); + return E_OUTOFMEMORY; + } + + *shortcut = (IDispatch*)&This->IWshShortcut_iface; + + return S_OK; +} + +static HRESULT WINAPI WshShell3_QueryInterface(IWshShell3 *iface, REFIID riid, void **ppv) +{ + TRACE("(%s, %p)\n", debugstr_guid(riid), ppv); + + *ppv = NULL; + + if(IsEqualGUID(riid, &IID_IUnknown) || + IsEqualGUID(riid, &IID_IDispatch) || + IsEqualGUID(riid, &IID_IWshShell3)) + { + *ppv = iface; + } + else if (IsEqualGUID(riid, &IID_IDispatchEx)) + { + return E_NOINTERFACE; + } + else + { + FIXME("Unknown iface %s\n", debugstr_guid(riid)); + return E_NOINTERFACE; + } + + IWshShell3_AddRef(iface); + return S_OK; +} + +static ULONG WINAPI WshShell3_AddRef(IWshShell3 *iface) +{ + TRACE("()\n"); + return 2; +} + +static ULONG WINAPI WshShell3_Release(IWshShell3 *iface) +{ + TRACE("()\n"); + return 2; +} + +static HRESULT WINAPI WshShell3_GetTypeInfoCount(IWshShell3 *iface, UINT *pctinfo) +{ + TRACE("(%p)\n", pctinfo); + *pctinfo = 1; + return S_OK; +} + +static HRESULT WINAPI WshShell3_GetTypeInfo(IWshShell3 *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo) +{ + TRACE("(%u %u %p)\n", iTInfo, lcid, ppTInfo); + return get_typeinfo(IWshShell3_tid, ppTInfo); +} + +static HRESULT WINAPI WshShell3_GetIDsOfNames(IWshShell3 *iface, REFIID riid, LPOLESTR *rgszNames, + UINT cNames, LCID lcid, DISPID *rgDispId) +{ + ITypeInfo *typeinfo; + HRESULT hr; + + TRACE("(%s %p %u %u %p)\n", debugstr_guid(riid), rgszNames, cNames, lcid, rgDispId); + + hr = get_typeinfo(IWshShell3_tid, &typeinfo); + if(SUCCEEDED(hr)) + { + hr = ITypeInfo_GetIDsOfNames(typeinfo, rgszNames, cNames, rgDispId); + ITypeInfo_Release(typeinfo); + } + + return hr; +} + +static HRESULT WINAPI WshShell3_Invoke(IWshShell3 *iface, DISPID dispIdMember, REFIID riid, LCID lcid, + WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) +{ + ITypeInfo *typeinfo; + HRESULT hr; + + TRACE("(%d %s %d %d %p %p %p %p)\n", dispIdMember, debugstr_guid(riid), + lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); + + hr = get_typeinfo(IWshShell3_tid, &typeinfo); + if(SUCCEEDED(hr)) + { + hr = ITypeInfo_Invoke(typeinfo, &WshShell3, dispIdMember, wFlags, + pDispParams, pVarResult, pExcepInfo, puArgErr); + ITypeInfo_Release(typeinfo); + } + + return hr; +} + +static HRESULT WINAPI WshShell3_get_SpecialFolders(IWshShell3 *iface, IWshCollection **folders) +{ + TRACE("(%p)\n", folders); + return WshCollection_Create(folders); +} + +static HRESULT WINAPI WshShell3_get_Environment(IWshShell3 *iface, VARIANT *type, IWshEnvironment **env) +{ + FIXME("(%s %p): semi-stub\n", debugstr_variant(type), env); + return WshEnvironment_Create(env); +} + +static HRESULT WINAPI WshShell3_Run(IWshShell3 *iface, BSTR cmd, VARIANT *style, VARIANT *WaitOnReturn, int *exit_code) +{ + SHELLEXECUTEINFOW info; + int waitforprocess; + VARIANT s, w; + HRESULT hr; + + TRACE("(%s %s %s %p)\n", debugstr_w(cmd), debugstr_variant(style), debugstr_variant(WaitOnReturn), exit_code); + + VariantInit(&s); + hr = VariantChangeType(&s, style, 0, VT_I4); + if (FAILED(hr)) + { + ERR("failed to convert style argument, 0x%08x\n", hr); + return hr; + } + + VariantInit(&w); + hr = VariantChangeType(&w, WaitOnReturn, 0, VT_I4); + if (FAILED(hr)) + { + ERR("failed to convert wait argument, 0x%08x\n", hr); + return hr; + } + + memset(&info, 0, sizeof(info)); + info.cbSize = sizeof(info); + + waitforprocess = V_I4(&w); + + info.fMask = waitforprocess ? SEE_MASK_NOASYNC | SEE_MASK_NOCLOSEPROCESS : SEE_MASK_DEFAULT; + info.lpFile = cmd; + info.nShow = V_I4(&s); + + if (!ShellExecuteExW(&info)) + { + TRACE("ShellExecute failed, %d\n", GetLastError()); + return HRESULT_FROM_WIN32(GetLastError()); + } + else + { + if (waitforprocess) + { + if (exit_code) + { + DWORD code; + GetExitCodeProcess(info.hProcess, &code); + *exit_code = code; + } + CloseHandle(info.hProcess); + } + else + if (exit_code) *exit_code = 0; + + return S_OK; + } +} + +static HRESULT WINAPI WshShell3_Popup(IWshShell3 *iface, BSTR Text, VARIANT* SecondsToWait, VARIANT *Title, VARIANT *Type, int *button) +{ + FIXME("(%s %s %s %s %p): stub\n", debugstr_w(Text), debugstr_variant(SecondsToWait), + debugstr_variant(Title), debugstr_variant(Type), button); + return E_NOTIMPL; +} + +static HRESULT WINAPI WshShell3_CreateShortcut(IWshShell3 *iface, BSTR PathLink, IDispatch** Shortcut) +{ + TRACE("(%s %p)\n", debugstr_w(PathLink), Shortcut); + return WshShortcut_Create(PathLink, Shortcut); +} + +static HRESULT WINAPI WshShell3_ExpandEnvironmentStrings(IWshShell3 *iface, BSTR Src, BSTR* Dst) +{ + DWORD ret; + + TRACE("(%s %p)\n", debugstr_w(Src), Dst); + + if (!Src || !Dst) return E_POINTER; + + ret = ExpandEnvironmentStringsW(Src, NULL, 0); + *Dst = SysAllocStringLen(NULL, ret); + if (!*Dst) return E_OUTOFMEMORY; + + if (ExpandEnvironmentStringsW(Src, *Dst, ret)) + return S_OK; + else + { + SysFreeString(*Dst); + *Dst = NULL; + return HRESULT_FROM_WIN32(GetLastError()); + } +} + +static HRESULT WINAPI WshShell3_RegRead(IWshShell3 *iface, BSTR Name, VARIANT* out_Value) +{ + FIXME("(%s %p): stub\n", debugstr_w(Name), out_Value); + return E_NOTIMPL; +} + +static HRESULT WINAPI WshShell3_RegWrite(IWshShell3 *iface, BSTR Name, VARIANT *Value, VARIANT *Type) +{ + FIXME("(%s %s %s): stub\n", debugstr_w(Name), debugstr_variant(Value), debugstr_variant(Type)); + return E_NOTIMPL; +} + +static HRESULT WINAPI WshShell3_RegDelete(IWshShell3 *iface, BSTR Name) +{ + FIXME("(%s): stub\n", debugstr_w(Name)); + return E_NOTIMPL; +} + +static HRESULT WINAPI WshShell3_LogEvent(IWshShell3 *iface, VARIANT *Type, BSTR Message, BSTR Target, VARIANT_BOOL *out_Success) +{ + FIXME("(%s %s %s %p): stub\n", debugstr_variant(Type), debugstr_w(Message), debugstr_w(Target), out_Success); + return E_NOTIMPL; +} + +static HRESULT WINAPI WshShell3_AppActivate(IWshShell3 *iface, VARIANT *App, VARIANT *Wait, VARIANT_BOOL *out_Success) +{ + FIXME("(%s %s %p): stub\n", debugstr_variant(App), debugstr_variant(Wait), out_Success); + return E_NOTIMPL; +} + +static HRESULT WINAPI WshShell3_SendKeys(IWshShell3 *iface, BSTR Keys, VARIANT *Wait) +{ + FIXME("(%s %p): stub\n", debugstr_w(Keys), Wait); + return E_NOTIMPL; +} + +static const IWshShell3Vtbl WshShell3Vtbl = { + WshShell3_QueryInterface, + WshShell3_AddRef, + WshShell3_Release, + WshShell3_GetTypeInfoCount, + WshShell3_GetTypeInfo, + WshShell3_GetIDsOfNames, + WshShell3_Invoke, + WshShell3_get_SpecialFolders, + WshShell3_get_Environment, + WshShell3_Run, + WshShell3_Popup, + WshShell3_CreateShortcut, + WshShell3_ExpandEnvironmentStrings, + WshShell3_RegRead, + WshShell3_RegWrite, + WshShell3_RegDelete, + WshShell3_LogEvent, + WshShell3_AppActivate, + WshShell3_SendKeys +}; + +static IWshShell3 WshShell3 = { &WshShell3Vtbl }; + +HRESULT WINAPI WshShellFactory_CreateInstance(IClassFactory *iface, IUnknown *outer, REFIID riid, void **ppv) +{ + TRACE("(%p %s %p)\n", outer, debugstr_guid(riid), ppv); + + return IWshShell3_QueryInterface(&WshShell3, riid, ppv); +}
Propchange: trunk/reactos/dll/win32/wshom.ocx/shell.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/win32/wshom.ocx/wshom.idl URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/wshom.ocx/wshom.i... ============================================================================== --- trunk/reactos/dll/win32/wshom.ocx/wshom.idl (added) +++ trunk/reactos/dll/win32/wshom.ocx/wshom.idl [iso-8859-1] Sat Nov 8 10:22:22 2014 @@ -0,0 +1,666 @@ +/* + * 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 + */ + +#pragma makedep regtypelib + +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/reactos/dll/win32/wshom.ocx/wshom.idl ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/win32/wshom.ocx/wshom.ocx.spec URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/wshom.ocx/wshom.o... ============================================================================== --- trunk/reactos/dll/win32/wshom.ocx/wshom.ocx.spec (added) +++ trunk/reactos/dll/win32/wshom.ocx/wshom.ocx.spec [iso-8859-1] Sat Nov 8 10:22:22 2014 @@ -0,0 +1,4 @@ +@ stdcall -private DllCanUnloadNow() +@ stdcall -private DllGetClassObject(ptr ptr ptr) +@ stdcall -private DllRegisterServer() +@ stdcall -private DllUnregisterServer()
Propchange: trunk/reactos/dll/win32/wshom.ocx/wshom.ocx.spec ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/win32/wshom.ocx/wshom.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/wshom.ocx/wshom.r... ============================================================================== --- trunk/reactos/dll/win32/wshom.ocx/wshom.rc (added) +++ trunk/reactos/dll/win32/wshom.ocx/wshom.rc [iso-8859-1] Sat Nov 8 10:22:22 2014 @@ -0,0 +1,27 @@ +/* + * 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 + */ + +#include <windef.h> + +LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL + +/* @makedep: wshom.rgs */ +1 WINE_REGISTRY wshom.rgs + +2 WINE_REGISTRY wshom.tlb.rgs +1 TYPELIB wshom.tlb
Propchange: trunk/reactos/dll/win32/wshom.ocx/wshom.rc ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/win32/wshom.ocx/wshom.rgs URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/wshom.ocx/wshom.r... ============================================================================== --- trunk/reactos/dll/win32/wshom.ocx/wshom.rgs (added) +++ trunk/reactos/dll/win32/wshom.ocx/wshom.rgs [iso-8859-1] Sat Nov 8 10:22:22 2014 @@ -0,0 +1,34 @@ +HKCR +{ + NoRemove CLSID + { + '{f935dc22-1cf0-11d0-adb9-00c04fd58a0b}' + { + 'Implemented Categories' + { + '{40fc6ed5-2438-11cf-a3db-080036f12502}' + } + } + '{72c24dd5-d70a-438b-8a42-98424b88afb8}' + { + 'Implemented Categories' + { + '{40fc6ed5-2438-11cf-a3db-080036f12502}' + } + } + '{f935dc26-1cf0-11d0-adb9-00c04fd58a0b}' + { + 'Implemented Categories' + { + '{40fc6ed5-2438-11cf-a3db-080036f12502}' + } + } + '{093ff999-1ea0-4079-9525-9614c3504b74}' + { + 'Implemented Categories' + { + '{40fc6ed5-2438-11cf-a3db-080036f12502}' + } + } + } +}
Propchange: trunk/reactos/dll/win32/wshom.ocx/wshom.rgs ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/win32/wshom.ocx/wshom.tlb.rgs URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/wshom.ocx/wshom.t... ============================================================================== --- trunk/reactos/dll/win32/wshom.ocx/wshom.tlb.rgs (added) +++ trunk/reactos/dll/win32/wshom.ocx/wshom.tlb.rgs [iso-8859-1] Sat Nov 8 10:22:22 2014 @@ -0,0 +1,172 @@ +HKCR +{ + NoRemove Typelib + { + NoRemove '{F935DC20-1CF0-11D0-ADB9-00C04FD58A0B}' + { + '1.0' = s 'Windows Script Host Object Model' + { + '0' { win32 = s '%MODULE%' } + FLAGS = s '0' + } + } + } + NoRemove Interface + { + '{53BAD8C1-E718-11CF-893D-00A0C9054228}' = s 'ITextStream' + { + ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' + ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' + TypeLib = s '{F935DC20-1CF0-11D0-ADB9-00C04FD58A0B}' { val Version = s '1.0' } + } + '{C7C3F5A0-88A3-11D0-ABCB-00A0C90FFFC0}' = s 'IDrive' + { + ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' + ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' + TypeLib = s '{F935DC20-1CF0-11D0-ADB9-00C04FD58A0B}' { val Version = s '1.0' } + } + '{C7C3F5A4-88A3-11D0-ABCB-00A0C90FFFC0}' = s 'IFile' + { + ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' + ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' + TypeLib = s '{F935DC20-1CF0-11D0-ADB9-00C04FD58A0B}' { val Version = s '1.0' } + } + '{C7C3F5A5-88A3-11D0-ABCB-00A0C90FFFC0}' = s 'IFileCollection' + { + ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' + ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' + TypeLib = s '{F935DC20-1CF0-11D0-ADB9-00C04FD58A0B}' { val Version = s '1.0' } + } + '{C7C3F5A2-88A3-11D0-ABCB-00A0C90FFFC0}' = s 'IFolder' + { + ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' + ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' + TypeLib = s '{F935DC20-1CF0-11D0-ADB9-00C04FD58A0B}' { val Version = s '1.0' } + } + '{C7C3F5A3-88A3-11D0-ABCB-00A0C90FFFC0}' = s 'IFolderCollection' + { + ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' + ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' + TypeLib = s '{F935DC20-1CF0-11D0-ADB9-00C04FD58A0B}' { val Version = s '1.0' } + } + '{F935DC27-1CF0-11D0-ADB9-00C04FD58A0B}' = s 'IWshCollection' + { + ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' + ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' + TypeLib = s '{F935DC20-1CF0-11D0-ADB9-00C04FD58A0B}' { val Version = s '1.0' } + } + '{F935DC29-1CF0-11D0-ADB9-00C04FD58A0B}' = s 'IWshEnvironment' + { + ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' + ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' + TypeLib = s '{F935DC20-1CF0-11D0-ADB9-00C04FD58A0B}' { val Version = s '1.0' } + } + '{08FED190-BE19-11D3-A28B-00104BD35090}' = s 'IWshExec' + { + ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' + ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' + TypeLib = s '{F935DC20-1CF0-11D0-ADB9-00C04FD58A0B}' { val Version = s '1.0' } + } + '{F935DC23-1CF0-11D0-ADB9-00C04FD58A0B}' = s 'IWshShortcut' + { + ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' + ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' + TypeLib = s '{F935DC20-1CF0-11D0-ADB9-00C04FD58A0B}' { val Version = s '1.0' } + } + '{F935DC21-1CF0-11D0-ADB9-00C04FD58A0B}' = s 'IWshShell' + { + ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' + ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' + TypeLib = s '{F935DC20-1CF0-11D0-ADB9-00C04FD58A0B}' { val Version = s '1.0' } + } + '{24BE5A30-EDFE-11D2-B933-00104B365C9F}' = s 'IWshShell2' + { + ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' + ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' + TypeLib = s '{F935DC20-1CF0-11D0-ADB9-00C04FD58A0B}' { val Version = s '1.0' } + } + '{41904400-BE18-11D3-A28B-00104BD35090}' = s 'IWshShell3' + { + ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' + ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' + TypeLib = s '{F935DC20-1CF0-11D0-ADB9-00C04FD58A0B}' { val Version = s '1.0' } + } + '{24BE5A31-EDFE-11D2-B933-00104B365C9F}' = s 'IWshNetwork2' + { + ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' + ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' + TypeLib = s '{F935DC20-1CF0-11D0-ADB9-00C04FD58A0B}' { val Version = s '1.0' } + } + } + NoRemove CLSID + { + '{F935DC22-1CF0-11D0-ADB9-00C04FD58A0B}' = s 'Windows Script Host Shell Object' + { + InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' } + ProgId = s 'WScript.Shell.1' + TypeLib = s '{F935DC20-1CF0-11D0-ADB9-00C04FD58A0B}' + Version = s '1.0' + VersionIndependentProgId = s 'WScript.Shell' + } + '{72C24DD5-D70A-438B-8A42-98424B88AFB8}' = s 'Windows Script Host Shell Object' + { + InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' } + ProgId = s 'WScript.Shell.1' + TypeLib = s '{F935DC20-1CF0-11D0-ADB9-00C04FD58A0B}' + Version = s '1.0' + VersionIndependentProgId = s 'WScript.Shell' + } + '{F935DC26-1CF0-11D0-ADB9-00C04FD58A0B}' = s 'Windows Script Host Network Object' + { + InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' } + ProgId = s 'WScript.Network.1' + TypeLib = s '{F935DC20-1CF0-11D0-ADB9-00C04FD58A0B}' + Version = s '1.0' + VersionIndependentProgId = s 'WScript.Network' + } + '{093FF999-1EA0-4079-9525-9614C3504B74}' = s 'Windows Script Host Network Object' + { + InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' } + ProgId = s 'WScript.Network.1' + TypeLib = s '{F935DC20-1CF0-11D0-ADB9-00C04FD58A0B}' + Version = s '1.0' + VersionIndependentProgId = s 'WScript.Network' + } + } + 'WScript.Shell.1' = s 'Windows Script Host Shell Object' + { + CLSID = s '{F935DC22-1CF0-11D0-ADB9-00C04FD58A0B}' + } + 'WScript.Shell' = s 'Windows Script Host Shell Object' + { + CLSID = s '{F935DC22-1CF0-11D0-ADB9-00C04FD58A0B}' + CurVer = s 'WScript.Shell.1' + } + 'WScript.Shell.1' = s 'Windows Script Host Shell Object' + { + CLSID = s '{72C24DD5-D70A-438B-8A42-98424B88AFB8}' + } + 'WScript.Shell' = s 'Windows Script Host Shell Object' + { + CLSID = s '{72C24DD5-D70A-438B-8A42-98424B88AFB8}' + CurVer = s 'WScript.Shell.1' + } + 'WScript.Network.1' = s 'Windows Script Host Network Object' + { + CLSID = s '{F935DC26-1CF0-11D0-ADB9-00C04FD58A0B}' + } + 'WScript.Network' = s 'Windows Script Host Network Object' + { + CLSID = s '{F935DC26-1CF0-11D0-ADB9-00C04FD58A0B}' + CurVer = s 'WScript.Network.1' + } + 'WScript.Network.1' = s 'Windows Script Host Network Object' + { + CLSID = s '{093FF999-1EA0-4079-9525-9614C3504B74}' + } + 'WScript.Network' = s 'Windows Script Host Network Object' + { + CLSID = s '{093FF999-1EA0-4079-9525-9614C3504B74}' + CurVer = s 'WScript.Network.1' + } +}
Propchange: trunk/reactos/dll/win32/wshom.ocx/wshom.tlb.rgs ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/win32/wshom.ocx/wshom_main.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/wshom.ocx/wshom_m... ============================================================================== --- trunk/reactos/dll/win32/wshom.ocx/wshom_main.c (added) +++ trunk/reactos/dll/win32/wshom.ocx/wshom_main.c [iso-8859-1] Sat Nov 8 10:22:22 2014 @@ -0,0 +1,205 @@ +/* + * 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 + */ + +#include "wshom_private.h" + +#include <rpcproxy.h> + +static HINSTANCE wshom_instance; + +static ITypeLib *typelib; +static ITypeInfo *typeinfos[LAST_tid]; + +static REFIID tid_ids[] = { + &IID_NULL, + &IID_IWshCollection, + &IID_IWshEnvironment, + &IID_IWshShell3, + &IID_IWshShortcut +}; + +static HRESULT load_typelib(void) +{ + HRESULT hres; + ITypeLib *tl; + + hres = LoadRegTypeLib(&LIBID_IWshRuntimeLibrary, 1, 0, LOCALE_SYSTEM_DEFAULT, &tl); + if(FAILED(hres)) { + ERR("LoadRegTypeLib failed: %08x\n", hres); + return hres; + } + + if(InterlockedCompareExchangePointer((void**)&typelib, tl, NULL)) + ITypeLib_Release(tl); + return hres; +} + +HRESULT get_typeinfo(tid_t tid, ITypeInfo **typeinfo) +{ + HRESULT hres; + + if (!typelib) + hres = load_typelib(); + if (!typelib) + return hres; + + if(!typeinfos[tid]) { + ITypeInfo *ti; + + hres = ITypeLib_GetTypeInfoOfGuid(typelib, tid_ids[tid], &ti); + if(FAILED(hres)) { + ERR("GetTypeInfoOfGuid(%s) failed: %08x\n", debugstr_guid(tid_ids[tid]), hres); + return hres; + } + + if(InterlockedCompareExchangePointer((void**)(typeinfos+tid), ti, NULL)) + ITypeInfo_Release(ti); + } + + *typeinfo = typeinfos[tid]; + ITypeInfo_AddRef(*typeinfo); + return S_OK; +} + +static +void release_typelib(void) +{ + unsigned i; + + if(!typelib) + return; + + for(i=0; i < sizeof(typeinfos)/sizeof(*typeinfos); i++) + if(typeinfos[i]) + ITypeInfo_Release(typeinfos[i]); + + ITypeLib_Release(typelib); +} + +static HRESULT WINAPI ClassFactory_QueryInterface(IClassFactory *iface, REFIID riid, void **ppv) +{ + *ppv = NULL; + + if(IsEqualGUID(&IID_IUnknown, riid)) { + TRACE("(%p)->(IID_IUnknown %p)\n", iface, ppv); + *ppv = iface; + }else if(IsEqualGUID(&IID_IClassFactory, riid)) { + TRACE("(%p)->(IID_IClassFactory %p)\n", iface, ppv); + *ppv = iface; + } + + if(*ppv) { + IUnknown_AddRef((IUnknown*)*ppv); + return S_OK; + } + + FIXME("(%p)->(%s %p)\n", iface, debugstr_guid(riid), ppv); + return E_NOINTERFACE; +} + +static ULONG WINAPI ClassFactory_AddRef(IClassFactory *iface) +{ + TRACE("(%p)\n", iface); + return 2; +} + +static ULONG WINAPI ClassFactory_Release(IClassFactory *iface) +{ + TRACE("(%p)\n", iface); + return 1; +} + +static HRESULT WINAPI ClassFactory_LockServer(IClassFactory *iface, BOOL fLock) +{ + TRACE("(%p)->(%x)\n", iface, fLock); + return S_OK; +} + +static const IClassFactoryVtbl WshShellFactoryVtbl = { + ClassFactory_QueryInterface, + ClassFactory_AddRef, + ClassFactory_Release, + WshShellFactory_CreateInstance, + ClassFactory_LockServer +}; + +static IClassFactory WshShellFactory = { &WshShellFactoryVtbl }; + +/****************************************************************** + * DllMain (wshom.ocx.@) + */ +BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpv) +{ + TRACE("(%p %d %p)\n", hInstDLL, fdwReason, lpv); + + switch(fdwReason) + { + case DLL_WINE_PREATTACH: + return FALSE; /* prefer native version */ + case DLL_PROCESS_ATTACH: + wshom_instance = hInstDLL; + DisableThreadLibraryCalls(wshom_instance); + break; + case DLL_PROCESS_DETACH: + if (lpv) break; + release_typelib(); + break; + } + + return TRUE; +} + +/*********************************************************************** + * DllGetClassObject (wshom.ocx.@) + */ +HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv) +{ + if(IsEqualGUID(&CLSID_WshShell, rclsid)) { + TRACE("(CLSID_WshShell %s %p)\n", debugstr_guid(riid), ppv); + return IClassFactory_QueryInterface(&WshShellFactory, riid, ppv); + } + + FIXME("%s %s %p\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv); + return CLASS_E_CLASSNOTAVAILABLE; +} + +/*********************************************************************** + * DllCanUnloadNow (wshom.ocx.@) + */ +HRESULT WINAPI DllCanUnloadNow(void) +{ + return S_FALSE; +} + +/*********************************************************************** + * DllRegisterServer (wshom.ocx.@) + */ +HRESULT WINAPI DllRegisterServer(void) +{ + TRACE("()\n"); + return __wine_register_resources(wshom_instance); +} + +/*********************************************************************** + * DllUnregisterServer (wshom.ocx.@) + */ +HRESULT WINAPI DllUnregisterServer(void) +{ + TRACE("()\n"); + return __wine_unregister_resources(wshom_instance); +}
Propchange: trunk/reactos/dll/win32/wshom.ocx/wshom_main.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/win32/wshom.ocx/wshom_private.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/wshom.ocx/wshom_p... ============================================================================== --- trunk/reactos/dll/win32/wshom.ocx/wshom_private.h (added) +++ trunk/reactos/dll/win32/wshom.ocx/wshom_private.h [iso-8859-1] Sat Nov 8 10:22:22 2014 @@ -0,0 +1,47 @@ +/* + * 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 + */ + +#ifndef _WSHOM_PRIVATE_H_ +#define _WSHOM_PRIVATE_H_ + +#define WIN32_NO_STATUS +#define _INC_WINDOWS +#define COBJMACROS + +#include <windef.h> +#include <winbase.h> +#include <wshom.h> + +#include <wine/debug.h> +WINE_DEFAULT_DEBUG_CHANNEL(wshom); + +/* typelibs */ +typedef enum tid_t { + NULL_tid, + IWshCollection_tid, + IWshEnvironment_tid, + IWshShell3_tid, + IWshShortcut_tid, + LAST_tid +} tid_t; + +HRESULT get_typeinfo(tid_t tid, ITypeInfo **typeinfo) DECLSPEC_HIDDEN; + +HRESULT WINAPI WshShellFactory_CreateInstance(IClassFactory*,IUnknown*,REFIID,void**) DECLSPEC_HIDDEN; + +#endif /* _WSHOM_PRIVATE_H_ */
Propchange: trunk/reactos/dll/win32/wshom.ocx/wshom_private.h ------------------------------------------------------------------------------ svn:eol-style = native
Modified: trunk/reactos/media/doc/README.WINE URL: http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=6... ============================================================================== --- trunk/reactos/media/doc/README.WINE [iso-8859-1] (original) +++ trunk/reactos/media/doc/README.WINE [iso-8859-1] Sat Nov 8 10:22:22 2014 @@ -221,6 +221,7 @@ reactos/dll/win32/wintrust # Synced to Wine-1.7.27 reactos/dll/win32/wldap32 # Synced to Wine-1.7.27 reactos/dll/win32/wmi # Synced to Wine-1.7.27 +reactos/dll/win32/wshom.ocx # Synced to Wine-1.7.27 reactos/dll/win32/wtsapi32 # Synced to Wine-1.7.27 reactos/dll/win32/wuapi # Synced to Wine-1.7.27 reactos/dll/win32/xinput1_1 # Synced to Wine-1.7.27
Modified: trunk/reactos/media/inf/syssetup.inf URL: http://svn.reactos.org/svn/reactos/trunk/reactos/media/inf/syssetup.inf?rev=... ============================================================================== --- trunk/reactos/media/inf/syssetup.inf [iso-8859-1] (original) +++ trunk/reactos/media/inf/syssetup.inf [iso-8859-1] Sat Nov 8 10:22:22 2014 @@ -101,6 +101,7 @@ 11,,winhttp.dll,1 11,,wininet.dll,2 11,,wintrust.dll,1 +11,,wshom.ocx,1 11,,wuapi.dll,1 11,wbem,wbemdisp.dll,1 11,wbem,wbemprox.dll,1