[SHELL32] CCopyToMenu/CMoveToMenu: Check if this_ is NULL
[reactos.git] / dll / win32 / shell32 / CShellDispatch.h
1 /*
2 * PROJECT: shell32
3 * LICENSE: LGPL-2.1+ (https://spdx.org/licenses/LGPL-2.1+)
4 * PURPOSE: IShellDispatch implementation
5 * COPYRIGHT: Copyright 2015-2018 Mark Jansen (mark.jansen@reactos.org)
6 */
7
8 #ifndef _SHELLDISPATCH_H_
9 #define _SHELLDISPATCH_H_
10
11 #undef ShellExecute
12
13 class CShellDispatch:
14 public CComCoClass<CShellDispatch, &CLSID_Shell>,
15 public CComObjectRootEx<CComMultiThreadModelNoCS>,
16 public IDispatchImpl<IShellDispatch4, &IID_IShellDispatch4>,
17 public IObjectSafety,
18 public IObjectWithSite
19 {
20 private:
21
22 public:
23 CShellDispatch();
24 ~CShellDispatch();
25
26 HRESULT Initialize();
27
28 // *** IShellDispatch methods ***
29 virtual HRESULT STDMETHODCALLTYPE get_Application(IDispatch **ppid);
30 virtual HRESULT STDMETHODCALLTYPE get_Parent(IDispatch **ppid);
31 virtual HRESULT STDMETHODCALLTYPE NameSpace(VARIANT vDir, Folder **ppsdf);
32 virtual HRESULT STDMETHODCALLTYPE BrowseForFolder(LONG Hwnd, BSTR Title, LONG Options, VARIANT RootFolder, Folder **ppsdf);
33 virtual HRESULT STDMETHODCALLTYPE Windows(IDispatch **ppid);
34 virtual HRESULT STDMETHODCALLTYPE Open(VARIANT vDir);
35 virtual HRESULT STDMETHODCALLTYPE Explore(VARIANT vDir);
36 virtual HRESULT STDMETHODCALLTYPE MinimizeAll();
37 virtual HRESULT STDMETHODCALLTYPE UndoMinimizeALL();
38 virtual HRESULT STDMETHODCALLTYPE FileRun();
39 virtual HRESULT STDMETHODCALLTYPE CascadeWindows();
40 virtual HRESULT STDMETHODCALLTYPE TileVertically();
41 virtual HRESULT STDMETHODCALLTYPE TileHorizontally();
42 virtual HRESULT STDMETHODCALLTYPE ShutdownWindows();
43 virtual HRESULT STDMETHODCALLTYPE Suspend();
44 virtual HRESULT STDMETHODCALLTYPE EjectPC();
45 virtual HRESULT STDMETHODCALLTYPE SetTime();
46 virtual HRESULT STDMETHODCALLTYPE TrayProperties();
47 virtual HRESULT STDMETHODCALLTYPE Help();
48 virtual HRESULT STDMETHODCALLTYPE FindFiles();
49 virtual HRESULT STDMETHODCALLTYPE FindComputer();
50 virtual HRESULT STDMETHODCALLTYPE RefreshMenu();
51 virtual HRESULT STDMETHODCALLTYPE ControlPanelItem(BSTR szDir);
52
53 // *** IShellDispatch2 methods ***
54 virtual HRESULT STDMETHODCALLTYPE IsRestricted(BSTR group, BSTR restriction, LONG *value);
55 virtual HRESULT STDMETHODCALLTYPE ShellExecute(BSTR file, VARIANT args, VARIANT dir, VARIANT op, VARIANT show);
56 virtual HRESULT STDMETHODCALLTYPE FindPrinter(BSTR name, BSTR location, BSTR model);
57 virtual HRESULT STDMETHODCALLTYPE GetSystemInformation(BSTR name, VARIANT *ret);
58 virtual HRESULT STDMETHODCALLTYPE ServiceStart(BSTR service, VARIANT persistent, VARIANT *ret);
59 virtual HRESULT STDMETHODCALLTYPE ServiceStop(BSTR service, VARIANT persistent, VARIANT *ret);
60 virtual HRESULT STDMETHODCALLTYPE IsServiceRunning(BSTR service, VARIANT *running);
61 virtual HRESULT STDMETHODCALLTYPE CanStartStopService(BSTR service, VARIANT *ret);
62 virtual HRESULT STDMETHODCALLTYPE ShowBrowserBar(BSTR clsid, VARIANT show, VARIANT *ret);
63
64 // *** IShellDispatch3 methods ***
65 virtual HRESULT STDMETHODCALLTYPE AddToRecent(VARIANT file, BSTR category);
66
67 // *** IShellDispatch4 methods ***
68 virtual HRESULT STDMETHODCALLTYPE WindowsSecurity();
69 virtual HRESULT STDMETHODCALLTYPE ToggleDesktop();
70 virtual HRESULT STDMETHODCALLTYPE ExplorerPolicy(BSTR policy, VARIANT *value);
71 virtual HRESULT STDMETHODCALLTYPE GetSetting(LONG setting, VARIANT_BOOL *result);
72
73 // *** IObjectSafety methods ***
74 virtual HRESULT STDMETHODCALLTYPE GetInterfaceSafetyOptions(REFIID riid, DWORD *pdwSupportedOptions, DWORD *pdwEnabledOptions);
75 virtual HRESULT STDMETHODCALLTYPE SetInterfaceSafetyOptions(REFIID riid, DWORD dwOptionSetMask, DWORD dwEnabledOptions);
76
77 // *** IObjectWithSite methods ***
78 virtual HRESULT STDMETHODCALLTYPE SetSite(IUnknown *pUnkSite);
79 virtual HRESULT STDMETHODCALLTYPE GetSite(REFIID riid, PVOID *ppvSite);
80
81
82 DECLARE_REGISTRY_RESOURCEID(IDR_SHELL)
83 DECLARE_NOT_AGGREGATABLE(CShellDispatch)
84
85 DECLARE_PROTECT_FINAL_CONSTRUCT()
86
87 BEGIN_COM_MAP(CShellDispatch)
88 COM_INTERFACE_ENTRY_IID(IID_IShellDispatch4, IShellDispatch4)
89 COM_INTERFACE_ENTRY_IID(IID_IShellDispatch3, IShellDispatch3)
90 COM_INTERFACE_ENTRY_IID(IID_IShellDispatch2, IShellDispatch2)
91 COM_INTERFACE_ENTRY_IID(IID_IShellDispatch, IShellDispatch)
92 COM_INTERFACE_ENTRY_IID(IID_IDispatch, IDispatch)
93 COM_INTERFACE_ENTRY_IID(IID_IObjectSafety, IObjectSafety)
94 COM_INTERFACE_ENTRY_IID(IID_IObjectWithSite, IObjectWithSite)
95 END_COM_MAP()
96 };
97
98 #endif /* _SHELLDISPATCH_H_ */