ReactOS 0.4.17-dev-1190-g4c812f4
COpenControlPanel Class Reference

#include <CControlPanelFolder.h>

Inheritance diagram for COpenControlPanel:
Collaboration diagram for COpenControlPanel:

Public Member Functions

STDMETHOD() Open (LPCWSTR pszName, LPCWSTR pszPage, IUnknown *punkSite) override
 
STDMETHOD() GetPath (LPCWSTR pszName, LPWSTR pszPath, UINT cchPath) override
 
STDMETHOD() GetCurrentView (CPVIEW *pView) override
 
- Public Member Functions inherited from ATL::CComObjectRootEx< CComMultiThreadModelNoCS >
 ~CComObjectRootEx ()
 
ULONG InternalAddRef ()
 
ULONG InternalRelease ()
 
void Lock ()
 
void Unlock ()
 
HRESULT _AtlInitialConstruct ()
 
- Public Member Functions inherited from ATL::CComObjectRootBase
 CComObjectRootBase ()
 
 ~CComObjectRootBase ()
 
void SetVoid (void *)
 
HRESULT _AtlFinalConstruct ()
 
HRESULT FinalConstruct ()
 
void InternalFinalConstructAddRef ()
 
void InternalFinalConstructRelease ()
 
void FinalRelease ()
 

Static Public Member Functions

static HRESULT WINAPI UpdateRegistry (BOOL bRegister)
 
- Static Public Member Functions inherited from ATL::CComObjectRootBase
static void WINAPI ObjectMain (bool)
 
static const struct _ATL_CATMAP_ENTRY * GetCategoryMap ()
 
static HRESULT WINAPI InternalQueryInterface (void *pThis, const _ATL_INTMAP_ENTRY *pEntries, REFIID iid, void **ppvObject)
 

Additional Inherited Members

- Public Attributes inherited from ATL::CComObjectRootBase
LONG m_dwRef
 

Detailed Description

Definition at line 119 of file CControlPanelFolder.h.

Member Function Documentation

◆ GetCurrentView()

HRESULT WINAPI COpenControlPanel::GetCurrentView ( CPVIEW *  pView)
override

Definition at line 951 of file CControlPanelFolder.cpp.

952{
953 *pView = CPVIEW_CLASSIC;
954 return S_OK;
955}
#define S_OK
Definition: intsafe.h:52

◆ GetPath()

HRESULT WINAPI COpenControlPanel::GetPath ( LPCWSTR  pszName,
LPWSTR  pszPath,
UINT  cchPath 
)
override

Definition at line 928 of file CControlPanelFolder.cpp.

929{
930 HRESULT hr;
931 if (!pszName)
932 {
933 PWSTR cpfolder;
935 {
936 hr = StringCchCopyW(pszPath, cchPath, cpfolder);
937 SHFree(cpfolder);
938 }
939 }
940 else
941 {
942 WCHAR clsid[38 + 1];
943 if (SUCCEEDED(hr = FindExeCplClass(pszName, clsid)))
944 {
945 hr = CreateCplAbsoluteParsingPath(L"::", clsid, pszPath, cchPath);
946 }
947 }
948 return hr;
949}
static HRESULT GetParsingName(PCIDLIST_ABSOLUTE pidl, PWSTR *Name)
static HRESULT FindExeCplClass(LPCWSTR Canonical, HKEY hKey, BOOL Wow64, LPWSTR clsid)
static HRESULT CreateCplAbsoluteParsingPath(LPCWSTR Prefix, LPCWSTR InFolderParse, PWSTR Buf, UINT cchBuf)
HRESULT hr
Definition: delayimp.cpp:582
void WINAPI SHFree(LPVOID pv)
Definition: shellole.c:370
#define L(x)
Definition: resources.c:13
#define SUCCEEDED(hr)
Definition: intsafe.h:50
const CLSID * clsid
Definition: msctf.cpp:50
short WCHAR
Definition: pedump.c:58
#define CSIDL_CONTROLS
Definition: shlobj.h:2223
STRSAFEAPI StringCchCopyW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
Definition: strsafe.h:149
uint16_t * PWSTR
Definition: typedefs.h:56

◆ Open()

HRESULT WINAPI COpenControlPanel::Open ( LPCWSTR  pszName,
LPCWSTR  pszPage,
IUnknown *  punkSite 
)
override

Definition at line 893 of file CControlPanelFolder.cpp.

894{
895 WCHAR path[MAX_PATH], clspath[MAX_PATH];
896 HRESULT hr = S_OK;
897 SHELLEXECUTEINFOW sei = { sizeof(sei), SEE_MASK_FLAG_DDEWAIT };
898 sei.lpFile = path;
899 sei.nShow = SW_SHOW;
900 if (!pszName)
901 {
903 PathAppendW(path, L"control.exe");
904 }
905 else
906 {
907 LPWSTR clsid = clspath + wsprintfW(clspath, L"CLSID\\");
908 if (SUCCEEDED(hr = FindExeCplClass(pszName, clsid)))
909 {
911 {
912 // NT6 will execute "::{26EE0668-A00A-44D7-9371-BEB064C98683}\0\::{clsid}[\pszPage]"
913 // but we don't support parsing that so we force the class instead.
915 sei.lpClass = clspath;
916 }
917 }
918 }
919
920 if (SUCCEEDED(hr))
921 {
924 }
925 return hr;
926}
#define ERROR_SUCCESS
Definition: deptool.c:10
#define MAX_PATH
Definition: compat.h:34
UINT WINAPI GetSystemDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
Definition: path.c:2331
unsigned long DWORD
Definition: ntddk_ex.h:95
#define error(str)
Definition: mkdosfs.c:1605
#define PathAppendW
Definition: pathcch.h:310
int WINAPIV wsprintfW(_Out_ LPWSTR, _In_ _Printf_format_string_ LPCWSTR,...)
#define SW_SHOW
Definition: winuser.h:786
#define SEE_MASK_CLASSNAME
Definition: shellapi.h:25
#define SEE_MASK_FLAG_DDEWAIT
Definition: shellapi.h:36
BOOL WINAPI DECLSPEC_HOTPATCH ShellExecuteExW(LPSHELLEXECUTEINFOW sei)
Definition: shlexec.cpp:2738
#define _countof(array)
Definition: sndvol32.h:70
uint16_t * LPWSTR
Definition: typedefs.h:56
DWORD WINAPI GetLastError(void)
Definition: except.c:1042
static HRESULT HRESULT_FROM_WIN32(unsigned int x)
Definition: winerror.h:210

◆ UpdateRegistry()

static HRESULT WINAPI COpenControlPanel::UpdateRegistry ( BOOL  bRegister)
inlinestatic

Definition at line 130 of file CControlPanelFolder.h.

130{ return S_OK; } // CControlPanelFolder does it for us

The documentation for this class was generated from the following files: