mshtml: HTMLWindow_item code clean up.
[wine] / dlls / wshom.ocx / shell.c
1 /*
2  * Copyright 2011 Jacek Caban for CodeWeavers
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17  */
18
19 #include "wshom_private.h"
20 #include "wshom.h"
21
22 #include "wine/debug.h"
23
24 WINE_DEFAULT_DEBUG_CHANNEL(wshom);
25
26 static HRESULT WINAPI WshShell3_QueryInterface(IWshShell3 *iface, REFIID riid, void **ppv)
27 {
28     if(IsEqualGUID(riid, &IID_IUnknown)) {
29         TRACE("(IID_IUnknown %p)\n", ppv);
30         *ppv = iface;
31     }else if(IsEqualGUID(riid, &IID_IDispatch)) {
32         TRACE("(IID_IDispatch %p)\n", ppv);
33         *ppv = iface;
34     }else if(IsEqualGUID(riid, &IID_IWshShell3)) {
35         TRACE("(IID_IWshShell3 %p)\n", ppv);
36         *ppv = iface;
37     }else {
38         FIXME("Unknown iface %s\n", debugstr_guid(riid));
39         *ppv = NULL;
40         return E_NOINTERFACE;
41     }
42
43     IUnknown_AddRef((IUnknown*)*ppv);
44     return S_OK;
45 }
46
47 static ULONG WINAPI WshShell3_AddRef(IWshShell3 *iface)
48 {
49     TRACE("()\n");
50     return 2;
51 }
52
53 static ULONG WINAPI WshShell3_Release(IWshShell3 *iface)
54 {
55     TRACE("()\n");
56     return 2;
57 }
58
59 static HRESULT WINAPI WshShell3_GetTypeInfoCount(IWshShell3 *iface, UINT *pctinfo)
60 {
61     TRACE("(%p)\n", pctinfo);
62
63     *pctinfo = 1;
64     return S_OK;
65 }
66
67 static HRESULT WINAPI WshShell3_GetTypeInfo(IWshShell3 *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
68 {
69     FIXME("(%u %u %p)\n", iTInfo, lcid, ppTInfo);
70     return E_NOTIMPL;
71 }
72
73 static HRESULT WINAPI WshShell3_GetIDsOfNames(IWshShell3 *iface, REFIID riid, LPOLESTR *rgszNames,
74         UINT cNames, LCID lcid, DISPID *rgDispId)
75 {
76     FIXME("(%s %p %u %u %p)\n", debugstr_guid(riid), rgszNames, cNames, lcid, rgDispId);
77     return E_NOTIMPL;
78 }
79
80 static HRESULT WINAPI WshShell3_Invoke(IWshShell3 *iface, DISPID dispIdMember, REFIID riid, LCID lcid,
81         WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
82 {
83     FIXME("(%d %s %d %d %p %p %p %p)\n", dispIdMember, debugstr_guid(riid),
84           lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
85     return E_NOTIMPL;
86 }
87
88 static HRESULT WINAPI WshShell3_get_SpecialFolders(IWshShell3 *iface, IWshCollection **out_Folders)
89 {
90     FIXME("(%p)\n", out_Folders);
91     return E_NOTIMPL;
92 }
93
94 static HRESULT WINAPI WshShell3_get_Environment(IWshShell3 *iface, VARIANT *Type, IWshEnvironment **out_Env)
95 {
96     FIXME("(%p %p)\n", Type, out_Env);
97     return E_NOTIMPL;
98 }
99
100 static HRESULT WINAPI WshShell3_Run(IWshShell3 *iface, BSTR Command, VARIANT *WindowStyle, VARIANT *WaitOnReturn, int *out_ExitCode)
101 {
102     FIXME("(%p %p %p)\n", WindowStyle, WaitOnReturn, out_ExitCode);
103     return E_NOTIMPL;
104 }
105
106 static const IWshShell3Vtbl WshShell3Vtbl = {
107     WshShell3_QueryInterface,
108     WshShell3_AddRef,
109     WshShell3_Release,
110     WshShell3_GetTypeInfoCount,
111     WshShell3_GetTypeInfo,
112     WshShell3_GetIDsOfNames,
113     WshShell3_Invoke,
114     WshShell3_get_SpecialFolders,
115     WshShell3_get_Environment,
116     WshShell3_Run
117 };
118
119 static IWshShell3 WshShell3 = { &WshShell3Vtbl };
120
121 HRESULT WINAPI WshShellFactory_CreateInstance(IClassFactory *iface, IUnknown *outer, REFIID riid, void **ppv)
122 {
123     TRACE("(%p %s %p)\n", outer, debugstr_guid(riid), ppv);
124
125     return IWshShell3_QueryInterface(&WshShell3, riid, ppv);
126 }