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