Go to the source code of this file.
|
| WINE_DEFAULT_DEBUG_CHANNEL (shell) |
|
SHCONTF | SHELL_GetDefaultFolderEnumSHCONTF () |
|
BOOL | SHELL_IncludeItemInFolderEnum (IShellFolder *pSF, PCUITEMID_CHILD pidl, SFGAOF Query, SHCONTF Flags) |
|
HRESULT | Shell_NextElement (_Inout_ LPWSTR *ppch, _Out_ LPWSTR pszOut, _In_ INT cchOut, _In_ BOOL bValidate) |
|
HRESULT | SHELL32_ParseNextElement (IShellFolder2 *psf, HWND hwndOwner, LPBC pbc, LPITEMIDLIST *pidlInOut, LPOLESTR szNext, DWORD *pEaten, DWORD *pdwAttributes) |
|
HRESULT | SHELL32_CoCreateInitSF (LPCITEMIDLIST pidlRoot, PERSIST_FOLDER_TARGET_INFO *ppfti, LPCITEMIDLIST pidlChild, const GUID *clsid, REFIID riid, LPVOID *ppvOut) |
|
HRESULT | SHELL32_CoCreateInitSF (LPCITEMIDLIST pidlRoot, const GUID *clsid, int csidl, REFIID riid, LPVOID *ppvOut) |
|
HRESULT | SHELL32_BindToSF (LPCITEMIDLIST pidlRoot, PERSIST_FOLDER_TARGET_INFO *ppfti, LPCITEMIDLIST pidl, const GUID *clsid, REFIID riid, LPVOID *ppvOut) |
|
HRESULT | SHELL32_GetDisplayNameOfChild (IShellFolder2 *psf, LPCITEMIDLIST pidl, DWORD dwFlags, LPSTRRET strRet) |
|
HRESULT | SHELL32_CompareChildren (IShellFolder2 *psf, LPARAM lParam, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2) |
|
HRESULT | SHELL32_CompareDetails (IShellFolder2 *isf, LPARAM lParam, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2) |
|
LSTATUS | AddClassKeyToArray (const WCHAR *szClass, HKEY *array, UINT *cKeys) |
|
LSTATUS | AddClsidKeyToArray (REFCLSID clsid, HKEY *array, UINT *cKeys) |
|
void | AddFSClassKeysToArray (UINT cidl, PCUITEMID_CHILD_ARRAY apidl, HKEY *array, UINT *cKeys) |
|
HRESULT | SH_GetApidlFromDataObject (IDataObject *pDataObject, PIDLIST_ABSOLUTE *ppidlfolder, PUITEMID_CHILD **apidlItems, UINT *pcidl) |
|
HRESULT WINAPI | SHCreateLinks (HWND hWnd, LPCSTR lpszDir, IDataObject *lpDataObject, UINT uFlags, LPITEMIDLIST *lppidlLinks) |
|
EXTERN_C HRESULT WINAPI | SHOpenFolderAndSelectItems (PCIDLIST_ABSOLUTE pidlFolder, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, DWORD dwFlags) |
|
static DWORD WINAPI | _ShowPropertiesDialogThread (LPVOID lpParameter) |
|
HRESULT | SHELL32_ShowPropertiesDialog (IDataObject *pdtobj) |
|
HRESULT | SHELL32_DefaultContextMenuCallBack (IShellFolder *psf, IDataObject *pdo, UINT msg) |
|
◆ _ShowPropertiesDialogThread()
Definition at line 500 of file shlfolder.cpp.
501{
504
505 CDataObjectHIDA cida(pDataObject);
506
508 return cida.hr();
509
510 if (cida->cidl > 1)
511 {
512 ERR(
"SHMultiFileProperties is not yet implemented\n");
514 }
515
519 return 0;
520
523 ERR(
"SH_ShowPropertiesDialog failed\n");
524
525 return 0;
526}
#define FAILED_UNEXPECTEDLY(hr)
BOOL SH_ShowPropertiesDialog(LPCWSTR pwszPath, IDataObject *pDataObj)
HRESULT WINAPI SHGetNameFromIDList(PCIDLIST_ABSOLUTE pidl, SIGDN sigdnName, PWSTR *ppszName)
LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
static PCUIDLIST_RELATIVE HIDA_GetPIDLItem(CIDA const *pida, SIZE_T i)
static PCUIDLIST_ABSOLUTE HIDA_GetPIDLFolder(CIDA const *pida)
Referenced by SHELL32_ShowPropertiesDialog().
◆ AddClassKeyToArray()
Definition at line 305 of file shlfolder.cpp.
306{
307 if (*cKeys >= 16)
309
313 {
314 array[*cKeys] = hkey;
315 *cKeys += 1;
316 }
318}
static LSTATUS(WINAPI *pRegDeleteTreeW)(HKEY
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
#define HKEY_CLASSES_ROOT
Referenced by AddClsidKeyToArray(), AddFSClassKeysToArray(), CDrivesContextMenu_CreateInstance(), CDesktopFolder::CreateViewObject(), CDrivesFolder::CreateViewObject(), CFSFolder::CreateViewObject(), CRegItemContextMenu_CreateInstance(), CDesktopFolder::GetUIObjectOf(), and CNetFolder::GetUIObjectOf().
◆ AddClsidKeyToArray()
Definition at line 320 of file shlfolder.cpp.
321{
325}
INT WINAPI StringFromGUID2(REFGUID id, LPOLESTR str, INT cmax)
LSTATUS AddClassKeyToArray(const WCHAR *szClass, HKEY *array, UINT *cKeys)
Referenced by CDesktopFolder::GetUIObjectOf().
◆ AddFSClassKeysToArray()
Definition at line 327 of file shlfolder.cpp.
328{
329
330
331
332 ASSERT(cidl >= 1 && apidl);
335 {
339 if (pFileData)
340 {
342 }
343 else
344 {
347 }
349
350 if (extension)
351 {
356 {
357
359
360
361 if (cidl == 1)
363 }
364
365 swprintf(wszSFA,
L"SystemFileAssociations\\%s", extension);
367
368 dwSize =
sizeof(wszClass);
370 {
371 swprintf(wszSFA,
L"SystemFileAssociations\\%s", wszClass);
373 }
374 }
375
378 }
380 {
381
382
383
384
385
389 }
390 else
391 {
392 ERR(
"Got non FS pidl\n");
393 }
394}
LSTATUS WINAPI RegGetValueW(HKEY hKey, LPCWSTR pszSubKey, LPCWSTR pszValue, DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData)
GLenum GLuint GLenum GLsizei const GLchar * buf
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
FileStructW * _ILGetFileStructW(LPCITEMIDLIST pidl)
BOOL _ILIsFolder(LPCITEMIDLIST pidl)
BOOL _ILIsValue(LPCITEMIDLIST pidl)
DWORD _ILSimpleGetTextW(LPCITEMIDLIST pidl, LPWSTR szOut, UINT uOutSize)
#define PathFindExtension
const ITEMID_CHILD UNALIGNED * PCUITEMID_CHILD
Referenced by CDesktopFolder::GetUIObjectOf(), and CFSFolder::GetUIObjectOf().
◆ SH_GetApidlFromDataObject()
◆ SHCreateLinks()
◆ SHELL32_BindToSF()
Definition at line 196 of file shlfolder.cpp.
198{
200 if (!pidlChild)
202
205 ppfti,
206 pidlChild,
210
213
215 return psf->QueryInterface(
riid, ppvOut);
216 else
218}
BOOL WINAPI _ILIsPidlSimple(LPCITEMIDLIST pidl)
void WINAPI ILFree(LPITEMIDLIST pidl)
LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST pidl)
LPITEMIDLIST WINAPI ILGetNext(LPCITEMIDLIST pidl)
HRESULT SHELL32_CoCreateInitSF(LPCITEMIDLIST pidlRoot, PERSIST_FOLDER_TARGET_INFO *ppfti, LPCITEMIDLIST pidlChild, const GUID *clsid, REFIID riid, LPVOID *ppvOut)
#define IID_PPV_ARG(Itype, ppType)
Referenced by CDrivesFolder::BindToObject(), CFSFolder::BindToObject(), CNetFolder::BindToObject(), and CRegFolder::BindToObject().
◆ SHELL32_CoCreateInitSF() [1/2]
Definition at line 185 of file shlfolder.cpp.
187{
188
189 PERSIST_FOLDER_TARGET_INFO pfti = {0};
190 pfti.dwAttributes = -1;
191 pfti.csidl = csidl;
192
194}
◆ SHELL32_CoCreateInitSF() [2/2]
Definition at line 158 of file shlfolder.cpp.
160{
163
167
171
173 {
174 ppf3->InitializeEx(
NULL, pidlAbsolute, ppfti);
175 }
177 {
178 ppf->Initialize(pidlAbsolute);
179 }
181
182 return pShellFolder->QueryInterface(
riid, ppvOut);
183}
HRESULT WINAPI SHCoCreateInstance(LPCWSTR aclsid, const CLSID *clsid, LPUNKNOWN pUnkOuter, REFIID refiid, LPVOID *ppv)
Referenced by SHELL32_BindToSF(), and SHELL32_CoCreateInitSF().
◆ SHELL32_CompareChildren()
◆ SHELL32_CompareDetails()
Definition at line 275 of file shlfolder.cpp.
276{
281
285
289
293
297
301
303}
HRESULT WINAPI StrRetToBufW(LPSTRRET src, const ITEMIDLIST *pidl, LPWSTR dest, UINT len)
HRESULT GetDetailsOf([in] PCUITEMID_CHILD pidl, [in] UINT iColumn, [out] SHELLDETAILS *psd)
_Check_return_ _CRTIMP int __cdecl _wcsicmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
HRESULT SHELL32_CompareChildren(IShellFolder2 *psf, LPARAM lParam, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
Referenced by CControlPanelFolder::CompareIDs(), CDrivesFolder::CompareIDs(), CFSFolder::CompareIDs(), CPrinterFolder::CompareIDs(), and CRegFolder::CompareIDs().
◆ SHELL32_DefaultContextMenuCallBack()
◆ SHELL32_GetDisplayNameOfChild()
◆ SHELL32_ParseNextElement()
Definition at line 107 of file shlfolder.cpp.
109{
115
117
118
122
123 hr = psfChild->ParseDisplayName(hwndOwner, pbc, szNext, pEaten, &pidlOut, pdwAttributes);
126
128 if (!pidlTemp)
129 {
131 if (pidlOut)
134 }
135
136 if (pidlOut)
138
139 if (pidlIn)
141
142 *pidlInOut = pidlTemp;
143
144 TRACE (
"-- pidl=%p ret=0x%08x\n", pidlInOut ? *pidlInOut :
NULL,
hr);
146}
Referenced by CRegFolder::ParseDisplayName().
◆ SHELL32_ShowPropertiesDialog()
Definition at line 532 of file shlfolder.cpp.
533{
534 if (!pdtobj)
536
539 {
542 }
543 else
544 {
546 }
547}
BOOL WINAPI SHCreateThread(LPTHREAD_START_ROUTINE pfnThreadProc, VOID *pData, DWORD dwFlags, LPTHREAD_START_ROUTINE pfnCallback)
HRESULT HResultFromWin32(DWORD hr)
static DWORD WINAPI _ShowPropertiesDialogThread(LPVOID lpParameter)
DWORD WINAPI GetLastError(void)
Referenced by CDefaultContextMenu::DoProperties(), and SHMultiFileProperties().
◆ SHELL_GetDefaultFolderEnumSHCONTF()
SHCONTF SHELL_GetDefaultFolderEnumSHCONTF |
( |
| ) |
|
Definition at line 29 of file shlfolder.cpp.
30{
34 if (
ss.fShowAllObjects)
35 Flags |= SHCONTF_INCLUDEHIDDEN;
36 if (
ss.fShowSuperHidden)
37 Flags |= SHCONTF_INCLUDESUPERHIDDEN;
39}
VOID WINAPI SHGetSetSettings(LPSHELLSTATE lpss, DWORD dwMask, BOOL bSet)
#define SSF_SHOWSUPERHIDDEN
#define SSF_SHOWALLOBJECTS
_Must_inspect_result_ _In_ ULONG Flags
Referenced by SHELL32_GetFSItemAttributes().
◆ SHELL_IncludeItemInFolderEnum()
Definition at line 41 of file shlfolder.cpp.
42{
44 {
45 if (
Query & SFGAO_NONENUMERATED)
47 if ((
Query & SFGAO_HIDDEN) && !(
Flags & SHCONTF_INCLUDEHIDDEN))
49 if ((
Query & (SFGAO_HIDDEN | SFGAO_SYSTEM)) == (SFGAO_HIDDEN | SFGAO_SYSTEM) && !(
Flags & SHCONTF_INCLUDESUPERHIDDEN))
51 if ((
Flags & (SHCONTF_FOLDERS | SHCONTF_NONFOLDERS)) != (SHCONTF_FOLDERS | SHCONTF_NONFOLDERS))
52 return (
Flags & SHCONTF_FOLDERS) ? (
Query & SFGAO_FOLDER) : !(
Query & SFGAO_FOLDER);
53 }
55}
BOOL Query(LPCTSTR *ServiceArgs, DWORD ArgCount, BOOL bExtended)
HRESULT GetAttributesOf([in] UINT cidl, [in, size_is(cidl)] PCUITEMID_CHILD_ARRAY apidl, [in, out] SFGAOF *rgfInOut)
Referenced by CRegFolderEnum::AddItemsFromKey(), and CRegFolderEnum::Initialize().
◆ Shell_NextElement()
Definition at line 58 of file shlfolder.cpp.
63{
65
66 if (!*ppch)
68
71 if (pchNext)
72 {
73 if (*ppch < pchNext)
74 {
75
77 ++pchNext;
78
79 if (!*pchNext)
81
83 }
84 else
85 {
88 }
89 }
90 else
91 {
94 }
95
96 *ppch = pchNext;
97
99 {
102 }
103
105}
BOOL PathIsValidElement(_In_ LPCWSTR pszPath)
STRSAFEAPI StringCchCopyW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
STRSAFEAPI StringCchCopyNW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc, size_t cchToCopy)
Referenced by CFSFolder::_ParseSimple(), and CFSFolder::ParseDisplayName().
◆ SHOpenFolderAndSelectItems()
Definition at line 437 of file shlfolder.cpp.
441{
442 ERR(
"SHOpenFolderAndSelectItems() is hackplemented\n");
445 if (cidl)
446 {
447
449 {
450 pidlItem = apidl[0];
451 }
452 else
453 {
454 HRESULT hr = SHILCombine(pidlFolder, apidl[0], &pidlItem);
458 }
459 }
460 else
461 {
462 pidlItem = pidlFolder;
463 }
464
466
470
472 hr = psfDesktop->GetDisplayNameOf(pidlItem, SHGDN_FORPARSING, &strret);
475
480
482 wcscpy(wszParams,
L"/select,");
483 wcscat(wszParams, wszBuf);
484
486 memset(&sei, 0,
sizeof sei);
491
494 else
496}
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
_CRTIMP wchar_t *__cdecl wcscat(_Inout_updates_z_(_String_length_(_Dest)+_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
#define SEE_MASK_WAITFORINPUTIDLE
static BOOL ILIsSingle(LPCITEMIDLIST pidl)
BOOL WINAPI DECLSPEC_HOTPATCH ShellExecuteExW(LPSHELLEXECUTEINFOW sei)
Referenced by CFindFolderContextMenu::InvokeCommand(), and CShellLink::OnCommand().
◆ WINE_DEFAULT_DEBUG_CHANNEL()
WINE_DEFAULT_DEBUG_CHANNEL |
( |
shell |
| ) |
|