xref: /reactos/dll/win32/shell32/CShellDispatch.h (revision 07608028)
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_ */
99