Jacek Caban : wshom.ocx: Added IWshShell3 interface stub implementation.

Alexandre Julliard julliard at winehq.org
Tue Sep 20 13:08:36 CDT 2011


Module: wine
Branch: master
Commit: cf2a4399472f7c4171c90c05a595828498f2878b
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=cf2a4399472f7c4171c90c05a595828498f2878b

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Tue Sep 20 11:55:44 2011 +0200

wshom.ocx: Added IWshShell3 interface stub implementation.

---

 dlls/wshom.ocx/shell.c |  101 +++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 99 insertions(+), 2 deletions(-)

diff --git a/dlls/wshom.ocx/shell.c b/dlls/wshom.ocx/shell.c
index 598ca9a..9392ff5 100644
--- a/dlls/wshom.ocx/shell.c
+++ b/dlls/wshom.ocx/shell.c
@@ -17,13 +17,110 @@
  */
 
 #include "wshom_private.h"
+#include "wshom.h"
 
 #include "wine/debug.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(wshom);
 
+static HRESULT WINAPI WshShell3_QueryInterface(IWshShell3 *iface, REFIID riid, void **ppv)
+{
+    if(IsEqualGUID(riid, &IID_IUnknown)) {
+        TRACE("(IID_IUnknown %p)\n", ppv);
+        *ppv = iface;
+    }else if(IsEqualGUID(riid, &IID_IDispatch)) {
+        TRACE("(IID_IDispatch %p)\n", ppv);
+        *ppv = iface;
+    }else if(IsEqualGUID(riid, &IID_IWshShell3)) {
+        TRACE("(IID_IWshShell3 %p)\n", ppv);
+        *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 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)
+{
+    FIXME("(%u %u %p)\n", iTInfo, lcid, ppTInfo);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI WshShell3_GetIDsOfNames(IWshShell3 *iface, REFIID riid, LPOLESTR *rgszNames,
+        UINT cNames, LCID lcid, DISPID *rgDispId)
+{
+    FIXME("(%s %p %u %u %p)\n", debugstr_guid(riid), rgszNames, cNames, lcid, rgDispId);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI WshShell3_Invoke(IWshShell3 *iface, DISPID dispIdMember, REFIID riid, LCID lcid,
+        WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
+{
+    FIXME("(%d %s %d %d %p %p %p %p)\n", dispIdMember, debugstr_guid(riid),
+          lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI WshShell3_get_SpecialFolders(IWshShell3 *iface, IWshCollection **out_Folders)
+{
+    FIXME("(%p)\n", out_Folders);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI WshShell3_get_Environment(IWshShell3 *iface, VARIANT *Type, IWshEnvironment **out_Env)
+{
+    FIXME("(%p %p)\n", Type, out_Env);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI WshShell3_Run(IWshShell3 *iface, BSTR Command, VARIANT *WindowStyle, VARIANT *WaitOnReturn, int *out_ExitCode)
+{
+    FIXME("(%p %p %p)\n", WindowStyle, WaitOnReturn, out_ExitCode);
+    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
+};
+
+static IWshShell3 WshShell3 = { &WshShell3Vtbl };
+
 HRESULT WINAPI WshShellFactory_CreateInstance(IClassFactory *iface, IUnknown *outer, REFIID riid, void **ppv)
 {
-    FIXME("(%p %s %p)\n", outer, debugstr_guid(riid), ppv);
-    return E_NOINTERFACE;
+    TRACE("(%p %s %p)\n", outer, debugstr_guid(riid), ppv);
+
+    return IWshShell3_QueryInterface(&WshShell3, riid, ppv);
 }




More information about the wine-cvs mailing list