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)
8 #ifndef _SHELLDISPATCH_H_
9 #define _SHELLDISPATCH_H_
14 public CComCoClass
<CShellDispatch
, &CLSID_Shell
>,
15 public CComObjectRootEx
<CComMultiThreadModelNoCS
>,
16 public IDispatchImpl
<IShellDispatch4
, &IID_IShellDispatch4
>,
18 public IObjectWithSite
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
);
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
);
64 // *** IShellDispatch3 methods ***
65 virtual HRESULT STDMETHODCALLTYPE
AddToRecent(VARIANT file
, BSTR category
);
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
);
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
);
77 // *** IObjectWithSite methods ***
78 virtual HRESULT STDMETHODCALLTYPE
SetSite(IUnknown
*pUnkSite
);
79 virtual HRESULT STDMETHODCALLTYPE
GetSite(REFIID riid
, PVOID
*ppvSite
);
82 DECLARE_REGISTRY_RESOURCEID(IDR_SHELL
)
83 DECLARE_NOT_AGGREGATABLE(CShellDispatch
)
85 DECLARE_PROTECT_FINAL_CONSTRUCT()
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
)
98 #endif /* _SHELLDISPATCH_H_ */