ReactOS 0.4.17-dev-769-g1500a35
CAssocApplicationElement Class Reference
Inheritance diagram for CAssocApplicationElement:
Collaboration diagram for CAssocApplicationElement:

Public Member Functions

STDMETHODIMP GetClassID (CLSID *pClsid) override
 
STDMETHODIMP QueryObject (ASSOCQUERY query, PCWSTR key, REFIID riid, PVOID *ppv) override
 
STDMETHODIMP QueryString (ASSOCQUERY query, PCWSTR key, PWSTR *ppsz) override
 
- Public Member Functions inherited from CAssocShellElement
 ~CAssocShellElement ()
 
STDMETHODIMP QueryInterface (REFIID riid, PVOID *ppv) override
 
 STDMETHODIMP_ (ULONG) AddRef() override
 
 STDMETHODIMP_ (ULONG) Release() override
 
STDMETHODIMP QueryString (ASSOCQUERY query, PCWSTR key, PWSTR *ppszValue) override
 
STDMETHODIMP QueryDword (ASSOCQUERY query, PCWSTR key, DWORD *pdwValue) override
 
STDMETHODIMP QueryExists (ASSOCQUERY query, PCWSTR key) override
 
STDMETHODIMP QueryDirect (ASSOCQUERY query, PCWSTR key, FLAGGED_BYTE_BLOB **ppBlob) override
 
STDMETHODIMP QueryObject (ASSOCQUERY query, PCWSTR key, REFIID riid, PVOID *ppvObj) override
 
STDMETHODIMP GetClassID (CLSID *pClassID) override
 
STDMETHODIMP SetString (PCWSTR psz) override
 
STDMETHODIMP GetString (PWSTR *ppsz) override
 
virtual BOOL _UseEnumForDefaultVerb ()
 
virtual HRESULT _InitSource ()
 
virtual BOOL _IsAppSource ()
 
virtual HRESULT _GetVerbDelegate (PCWSTR pszSrc, IAssociationElementOld **ppElement)
 
- Public Member Functions inherited from CAssocElement
virtual ~CAssocElement ()
 
STDMETHODIMP QueryInterface (REFIID riid, PVOID *ppv) override
 
 STDMETHODIMP_ (ULONG) AddRef() override
 
 STDMETHODIMP_ (ULONG) Release() override
 
STDMETHODIMP SetSource (IQuerySourceOld *pSource) override
 
STDMETHODIMP GetSource (REFIID riid, PVOID *ppSource) override
 
STDMETHODIMP QueryString (ASSOCQUERY query, PCWSTR key, PWSTR *ppszValue) override
 
STDMETHODIMP QueryDword (ASSOCQUERY query, PCWSTR key, DWORD *pdwValue) override
 
STDMETHODIMP QueryExists (ASSOCQUERY query, PCWSTR key) override
 
STDMETHODIMP QueryDirect (ASSOCQUERY query, PCWSTR key, FLAGGED_BYTE_BLOB **ppBlob) override
 
STDMETHODIMP QueryObject (ASSOCQUERY query, PCWSTR key, REFIID riid, PVOID *ppvObj) override
 

Protected Member Functions

UINT _GetQueryKeyVal (const QUERYKEYVAL **ppItems) override
 
HRESULT _InitSource () override
 
HRESULT _GetAppDisplayName (PWSTR *ppsz)
 
- Protected Member Functions inherited from CAssocShellElement
UINT _GetQueryKeyVal (const QUERYKEYVAL **ppItems) override
 
HRESULT _DefaultVerbSource (IQuerySourceOld **ppSource)
 
- Protected Member Functions inherited from CAssocElement
HRESULT _QueryKeyValAny (QUERY_CALLBACK callback, const QUERYKEYVAL *pItems, UINT cItems, IQuerySourceOld *pQS, ASSOCQUERY query, PCWSTR valueName, PVOID pValue)
 
HRESULT _QuerySourceAny (QUERY_CALLBACK callback, IQuerySourceOld *pSource, DWORD dwFlags, ASSOCQUERY query, PCWSTR valueName, PVOID pValue)
 
virtual UINT _GetQueryKeyVal (const QUERYKEYVAL **ppItems)
 

Protected Attributes

BOOL m_bHasDir = FALSE
 
- Protected Attributes inherited from CAssocShellElement
PWSTR m_pszName = NULL
 
WCHAR m_szBuff [64] = L""
 
- Protected Attributes inherited from CAssocElement
LONG m_cRefs = 1
 
IQuerySourceOld * m_pSource = NULL
 

Detailed Description

Definition at line 484 of file elements.cpp.

Member Function Documentation

◆ _GetAppDisplayName()

HRESULT CAssocApplicationElement::_GetAppDisplayName ( PWSTR ppsz)
protected

Definition at line 1174 of file elements.cpp.

1175{
1176 PWSTR pszName;
1177 if (!m_bHasDir)
1178 {
1181 return hr;
1182 }
1183 else
1184 {
1185 pszName = m_pszName;
1186 }
1187
1188 WCHAR szData[MAX_PATH];
1189 DWORD cbData = sizeof(szData);
1191 HRESULT hr = SKGetValueW(flags, NULL, pszName, 0, szData, &cbData);
1193 {
1194 UINT cchData = MAX_PATH;
1195 if (SHGetFileDescriptionW(pszName, NULL, NULL, szData, &cchData))
1196 {
1197 INT cchName = lstrlenW(szData);
1198 UINT cbName = (cchName + 1) * sizeof(WCHAR);
1199 SKSetValueW(flags, NULL, pszName, REG_SZ, (PBYTE)szData, cbName);
1200 hr = S_OK;
1201 }
1202 }
1203
1204 if (SUCCEEDED(hr))
1205 hr = SHStrDupW(szData, ppsz);
1206
1207 if (!m_bHasDir)
1208 CoTaskMemFree(pszName);
1209
1210 return hr;
1211}
STDMETHODIMP QueryString(ASSOCQUERY query, PCWSTR key, PWSTR *ppsz) override
Definition: elements.cpp:1165
HRESULT hr
Definition: delayimp.cpp:582
#define NULL
Definition: types.h:112
void WINAPI CoTaskMemFree(void *ptr)
Definition: malloc.c:389
#define MAX_PATH
Definition: compat.h:34
#define lstrlenW
Definition: compat.h:750
HRESULT WINAPI SHStrDupW(const WCHAR *src, WCHAR **dest)
Definition: main.c:1692
HRESULT WINAPI SKGetValueW(DWORD flags, LPCWSTR subkey, LPCWSTR value, DWORD *type, void *data, DWORD *count)
Definition: ordinal.c:4311
HRESULT WINAPI SKSetValueW(DWORD flags, LPCWSTR subkey, LPCWSTR value, DWORD type, void *data, DWORD count)
Definition: ordinal.c:4333
BOOL WINAPI SHGetFileDescriptionW(_In_ PCWSTR pszPath, _In_opt_ PCWSTR pszVerKey, _In_opt_ PCWSTR pszDisplayName, _Out_opt_ PWSTR pszOut, _Inout_ PUINT pcchOut)
Definition: utils.cpp:1087
#define FAILED_UNEXPECTEDLY
Definition: utils.cpp:33
#define ASSOCQUERY_DELEGATE
Definition: elements.h:34
unsigned long DWORD
Definition: ntddk_ex.h:95
GLbitfield flags
Definition: glext.h:7161
unsigned int UINT
Definition: sysinfo.c:13
#define S_OK
Definition: intsafe.h:52
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define REG_SZ
Definition: layer.c:22
@ SHKEY_Key_ShellNoRoam
Definition: ordinal.c:2809
@ SHKEY_Subkey_MUICache
Definition: ordinal.c:2816
@ SHKEY_Root_HKCU
Definition: ordinal.c:2805
BYTE * PBYTE
Definition: pedump.c:66
short WCHAR
Definition: pedump.c:58
_In_opt_ _In_opt_ _In_ _In_ DWORD cbData
Definition: shlwapi.h:761
uint16_t * PWSTR
Definition: typedefs.h:56
int32_t INT
Definition: typedefs.h:58
_In_ PSID _Out_writes_to_opt_ cchName LPSTR _Inout_ LPDWORD cchName
Definition: winbase.h:2497

Referenced by QueryString().

◆ _GetQueryKeyVal()

UINT CAssocApplicationElement::_GetQueryKeyVal ( const QUERYKEYVAL **  ppItems)
overrideprotectedvirtual

Reimplemented from CAssocShellElement.

Definition at line 1129 of file elements.cpp.

1130{
1131 *ppItems = g_shellAppKeyVals;
1133}
static const QUERYKEYVAL g_shellAppKeyVals[]
Definition: elements.cpp:64
#define _countof(array)
Definition: sndvol32.h:70

◆ _InitSource()

HRESULT CAssocApplicationElement::_InitSource ( )
overrideprotectedvirtual

Reimplemented from CAssocShellElement.

Definition at line 1135 of file elements.cpp.

1136{
1137 PWSTR pchFileName = PathFindFileNameW(m_pszName);
1138
1139 WCHAR szSubKey[MAX_PATH];
1140 _MakeApplicationsKey(pchFileName, szSubKey, _countof(szSubKey));
1141
1143 IID_PPV_ARG(IQuerySourceOld, &m_pSource));
1144 m_bHasDir = (pchFileName != m_pszName);
1146 return S_FALSE;
1147
1148 return hr;
1149}
IQuerySourceOld * m_pSource
Definition: elements.cpp:383
#define FALSE
Definition: types.h:117
WCHAR *WINAPI PathFindFileNameW(const WCHAR *path)
Definition: path.c:1677
BOOL WINAPI PathFileExistsW(const WCHAR *path)
Definition: path.c:2583
static void _MakeApplicationsKey(PCWSTR pszPath, PWSTR pszDest, UINT cchDest)
Definition: elements.cpp:290
EXTERN_C HRESULT WINAPI QuerySourceCreateFromKey(_In_ HKEY hKey, _In_opt_ PCWSTR lpSubKey, _In_ BOOL bCreate, _In_ REFIID riid, _Outptr_ PVOID *ppv)
Definition: querysrc.cpp:577
#define S_FALSE
Definition: winerror.h:3451
#define HKEY_CLASSES_ROOT
Definition: winreg.h:10
#define IID_PPV_ARG(Itype, ppType)

◆ GetClassID()

STDMETHODIMP CAssocApplicationElement::GetClassID ( CLSID pClsid)
override

Definition at line 1151 of file elements.cpp.

1152{
1153 *pClsid = CLSID_AssocApplicationElement;
1154 return S_OK;
1155}

◆ QueryObject()

STDMETHODIMP CAssocApplicationElement::QueryObject ( ASSOCQUERY  query,
PCWSTR  key,
REFIID  riid,
PVOID ppv 
)
override

Definition at line 1158 of file elements.cpp.

1159{
1163}
STDMETHODIMP QueryInterface(REFIID riid, PVOID *ppv) override
Definition: elements.cpp:691
STDMETHODIMP QueryObject(ASSOCQUERY query, PCWSTR key, REFIID riid, PVOID *ppvObj) override
Definition: elements.cpp:923
#define ASSOCQUERY_OBJECT_EV_1
Definition: elements.h:35
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
Definition: copy.c:22

◆ QueryString()

STDMETHODIMP CAssocApplicationElement::QueryString ( ASSOCQUERY  query,
PCWSTR  key,
PWSTR ppsz 
)
override

Definition at line 1165 of file elements.cpp.

1166{
1169 return _GetAppDisplayName(ppsz);
1170
1171 return hr;
1172}
HRESULT _GetAppDisplayName(PWSTR *ppsz)
Definition: elements.cpp:1174
STDMETHODIMP QueryString(ASSOCQUERY query, PCWSTR key, PWSTR *ppszValue) override
Definition: elements.cpp:861
#define ASSOCQUERY_APPKEY_FRIENDLYAPPNAME
Definition: elements.h:32

Referenced by _GetAppDisplayName().

Member Data Documentation

◆ m_bHasDir

BOOL CAssocApplicationElement::m_bHasDir = FALSE
protected

Definition at line 488 of file elements.cpp.

Referenced by _GetAppDisplayName(), and _InitSource().


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