ReactOS 0.4.17-dev-444-g71ee754
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 507 of file elements.cpp.

Member Function Documentation

◆ _GetAppDisplayName()

HRESULT CAssocApplicationElement::_GetAppDisplayName ( PWSTR ppsz)
protected

Definition at line 1197 of file elements.cpp.

1198{
1199 PWSTR pszName;
1200 if (!m_bHasDir)
1201 {
1204 return hr;
1205 }
1206 else
1207 {
1208 pszName = m_pszName;
1209 }
1210
1211 WCHAR szData[MAX_PATH];
1212 DWORD cbData = sizeof(szData);
1214 HRESULT hr = SKGetValueW(flags, NULL, pszName, 0, szData, &cbData);
1216 {
1217 UINT cchData = MAX_PATH;
1218 if (SHGetFileDescriptionW(pszName, NULL, NULL, szData, &cchData))
1219 {
1220 INT cchName = lstrlenW(szData);
1221 UINT cbName = (cchName + 1) * sizeof(WCHAR);
1222 SKSetValueW(flags, NULL, pszName, REG_SZ, (PBYTE)szData, cbName);
1223 hr = S_OK;
1224 }
1225 }
1226
1227 if (SUCCEEDED(hr))
1228 hr = SHStrDupW(szData, ppsz);
1229
1230 if (!m_bHasDir)
1231 CoTaskMemFree(pszName);
1232
1233 return hr;
1234}
STDMETHODIMP QueryString(ASSOCQUERY query, PCWSTR key, PWSTR *ppsz) override
Definition: elements.cpp:1188
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.cpp:57
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 1152 of file elements.cpp.

1153{
1154 *ppItems = g_shellAppKeyVals;
1156}
static const QUERYKEYVAL g_shellAppKeyVals[]
Definition: elements.cpp:87
#define _countof(array)
Definition: sndvol32.h:70

◆ _InitSource()

HRESULT CAssocApplicationElement::_InitSource ( )
overrideprotectedvirtual

Reimplemented from CAssocShellElement.

Definition at line 1158 of file elements.cpp.

1159{
1160 PWSTR pchFileName = PathFindFileNameW(m_pszName);
1161
1162 WCHAR szSubKey[MAX_PATH];
1163 _MakeApplicationsKey(pchFileName, szSubKey, _countof(szSubKey));
1164
1166 IID_PPV_ARG(IQuerySourceOld, &m_pSource));
1167 m_bHasDir = (pchFileName != m_pszName);
1169 return S_FALSE;
1170
1171 return hr;
1172}
IQuerySourceOld * m_pSource
Definition: elements.cpp:406
#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:313
EXTERN_C HRESULT WINAPI QuerySourceCreateFromKey(_In_ HKEY hKey, _In_opt_ PCWSTR lpSubKey, _In_ BOOL bCreate, _In_ REFIID riid, _Outptr_ PVOID *ppv)
Definition: querysrc.cpp:499
#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 1174 of file elements.cpp.

1175{
1176 *pClsid = CLSID_AssocApplicationElement;
1177 return S_OK;
1178}

◆ QueryObject()

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

Definition at line 1181 of file elements.cpp.

1182{
1186}
STDMETHODIMP QueryInterface(REFIID riid, PVOID *ppv) override
Definition: elements.cpp:714
STDMETHODIMP QueryObject(ASSOCQUERY query, PCWSTR key, REFIID riid, PVOID *ppvObj) override
Definition: elements.cpp:946
#define ASSOCQUERY_OBJECT_EV_1
Definition: elements.cpp:58
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 1188 of file elements.cpp.

1189{
1192 return _GetAppDisplayName(ppsz);
1193
1194 return hr;
1195}
HRESULT _GetAppDisplayName(PWSTR *ppsz)
Definition: elements.cpp:1197
STDMETHODIMP QueryString(ASSOCQUERY query, PCWSTR key, PWSTR *ppszValue) override
Definition: elements.cpp:884
#define ASSOCQUERY_APPKEY_FRIENDLYAPPNAME
Definition: elements.cpp:55

Referenced by _GetAppDisplayName().

Member Data Documentation

◆ m_bHasDir

BOOL CAssocApplicationElement::m_bHasDir = FALSE
protected

Definition at line 511 of file elements.cpp.

Referenced by _GetAppDisplayName(), and _InitSource().


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