ReactOS 0.4.16-dev-59-gd481587
utility.cpp
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS shdocvw
3 * LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
4 * PURPOSE: Utility routines
5 * COPYRIGHT: Copyright 2024 Whindmar Saksit <whindsaks@proton.me>
6 */
7
8#include "objects.h"
9
10#include <wine/debug.h>
12
13#ifndef SHCIDS_CANONICALONLY
14#define SHCIDS_CANONICALONLY 0x10000000L
15#endif
16
19{
20#if DLL_EXPORT_VERSION >= _WIN32_WINNT_VISTA && 0 // FIXME: SHELL32 not ready yet
21 return SHGetIDListFromObject(punk, ppidl);
22#else
23 HRESULT hr;
24 IPersistFolder2 *pf2;
26 {
27 hr = pf2->GetCurFolder(ppidl);
28 pf2->Release();
29 }
30 IPersistIDList *pil;
32 {
33 hr = pil->GetIDList(ppidl);
34 pil->Release();
35 }
36 return hr;
37#endif
38}
39
41{
42 IShellFolder *psf;
44 if (FAILED(hr))
45 return hr;
46 hr = psf->CompareIDs(lParam, a, b);
47 psf->Release();
48 return hr;
49}
50
53{
55}
56
59{
60 HRESULT hr;
61 WCHAR wide[MAX_PATH];
62 if (SUCCEEDED(hr = pcm->GetCommandString(idCmd, GCS_VERBW, NULL, (LPSTR)wide, _countof(wide))))
63 return !lstrcmpiW(wide, Verb);
64
65 CHAR ansi[_countof(wide)], buf[MAX_PATH];
66 if (SHUnicodeToAnsi(Verb, buf, _countof(buf)))
67 {
68 if (SUCCEEDED(hr = pcm->GetCommandString(idCmd, GCS_VERBA, NULL, ansi, _countof(ansi))))
69 return !lstrcmpiA(ansi, buf);
70 }
71 return FALSE;
72}
73
76{
77 return (pidl == NULL || pidl->mkid.cb == 0);
78}
79
80/*************************************************************************
81 * IEILIsEqual [SHDOCVW.219]
82 */
85 _In_ LPCITEMIDLIST pidl1,
86 _In_ LPCITEMIDLIST pidl2,
87 _In_ BOOL bUnknown)
88{
89 UINT cb1 = ILGetSize(pidl1), cb2 = ILGetSize(pidl2);
90 if (cb1 == cb2 && memcmp(pidl1, pidl2, cb1) == 0)
91 return TRUE;
92
93 FIXME("%p, %p\n", pidl1, pidl2);
94 return FALSE;
95}
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
Definition: utclib.c:112
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
Definition: precomp.h:23
#define FIXME(fmt,...)
Definition: precomp.h:53
#define EXTERN_C
Definition: basetyps.h:12
LPARAM lParam
Definition: combotst.c:139
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define MAX_PATH
Definition: compat.h:34
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
Definition: locale.c:4261
int WINAPI lstrcmpiA(LPCSTR str1, LPCSTR str2)
Definition: locale.c:4223
#define SHCIDS_CANONICALONLY
Definition: utility.cpp:14
EXTERN_C BOOL _ILIsDesktop(LPCITEMIDLIST pidl)
Definition: utility.cpp:75
static HRESULT SHELL_CompareAbsoluteIDs(LPARAM lParam, PCIDLIST_ABSOLUTE a, PCIDLIST_ABSOLUTE b)
Definition: utility.cpp:40
EXTERN_C BOOL WINAPI IEILIsEqual(_In_ LPCITEMIDLIST pidl1, _In_ LPCITEMIDLIST pidl2, _In_ BOOL bUnknown)
Definition: utility.cpp:84
EXTERN_C BOOL SHELL_IsVerb(IContextMenu *pcm, UINT_PTR idCmd, LPCWSTR Verb)
Definition: utility.cpp:58
EXTERN_C BOOL SHELL_IsEqualAbsoluteID(PCIDLIST_ABSOLUTE a, PCIDLIST_ABSOLUTE b)
Definition: utility.cpp:52
EXTERN_C HRESULT SHELL_GetIDListFromObject(IUnknown *punk, PIDLIST_ABSOLUTE *ppidl)
Definition: utility.cpp:18
INT WINAPI SHUnicodeToAnsi(LPCWSTR lpSrcStr, LPSTR lpDstStr, INT iLen)
Definition: string.c:2791
unsigned int BOOL
Definition: ntddk_ex.h:94
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
GLboolean GLboolean GLboolean GLboolean a
Definition: glext.h:6204
HRESULT GetCommandString([in] UINT_PTR idCmd, [in] UINT uType, [out] UINT *pwReserved, [out, size_is(cchMax)] LPSTR pszName, [in] UINT cchMax)
HRESULT GetCurFolder([out] PIDLIST_ABSOLUTE *ppidl)
HRESULT GetIDList([out] PIDLIST_ABSOLUTE *ppidl)
HRESULT CompareIDs([in] LPARAM lParam, [in] PCUIDLIST_RELATIVE pidl1, [in] PCUIDLIST_RELATIVE pidl2)
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
ULONG Release()
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define FAILED(hr)
Definition: intsafe.h:51
#define _In_
Definition: ms_sal.h:308
unsigned __int3264 UINT_PTR
Definition: mstsclib_h.h:274
unsigned int UINT
Definition: ndis.h:50
HRESULT WINAPI SHGetIDListFromObject(IUnknown *punk, PIDLIST_ABSOLUTE *ppidl)
Definition: pidl.c:1525
#define ILGetSize
Definition: shellclasses.h:638
HRESULT hr
Definition: shlfolder.c:183
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
Definition: shtypes.idl:42
#define _countof(array)
Definition: sndvol32.h:70
LONG_PTR LPARAM
Definition: windef.h:208
#define WINAPI
Definition: msvc.h:6
#define IID_PPV_ARG(Itype, ppType)
char * LPSTR
Definition: xmlstorage.h:182
__wchar_t WCHAR
Definition: xmlstorage.h:180
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
char CHAR
Definition: xmlstorage.h:175