48 L"CurrentVersion\\Explorer\\HideDesktopIcons\\ClassicStartMenu";
54 dwResult =
sizeof(
DWORD);
93 DWORD j = 0, dwVal, Val, dwType, dwIID;
105 dwIID =
sizeof(iid) /
sizeof(
WCHAR);
131 static const WCHAR MyDocumentsClassString[] =
L"{450D8FBA-AD25-11D0-98A8-0800361B1103}";
132 static const WCHAR InternetClassString[] =
L"{871C5380-42A0-1069-A2EA-08002B30309D}";
146 while((
S_OK == pRegEnumerator->
Next(1, &pidl, &dwFetched)) && dwFetched)
184#define DESKTOPSHELLVIEWCOLUMNS 6
187 SFGAO_HASSUBFOLDER | SFGAO_FILESYSTEM | SFGAO_FOLDER | SFGAO_FILESYSANCESTOR |
188 SFGAO_STORAGEANCESTOR | SFGAO_HASPROPSHEET | SFGAO_STORAGE;
190 SFGAO_CANRENAME | SFGAO_CANDELETE | SFGAO_HASPROPSHEET | SFGAO_DROPTARGET |
191 SFGAO_FILESYSANCESTOR | SFGAO_FOLDER | SFGAO_HASSUBFOLDER | SFGAO_CANLINK;
193 SFGAO_CANRENAME | SFGAO_CANDELETE | SFGAO_HASPROPSHEET | SFGAO_DROPTARGET |
194 SFGAO_FILESYSANCESTOR | SFGAO_FOLDER | SFGAO_HASSUBFOLDER | SFGAO_CANLINK;
218 &CLSID_ShellFSFolder,
226 &CLSID_ShellFSFolder,
262 int cLen =
wcslen(szFileName);
286 DWORD *pdwAttributes)
293 TRACE (
"(%p)->(HWND=%p,%p,%p=%s,%p,pidl=%p,%p)\n",
294 this, hwndOwner, pbc, lpszDisplayName,
debugstr_w(lpszDisplayName),
295 pchEaten, ppidl, pdwAttributes);
302 if (!lpszDisplayName)
308 urldata.
cbSize =
sizeof(urldata);
310 if (lpszDisplayName[0] ==
':' && lpszDisplayName[1] ==
':')
312 return m_regFolder->ParseDisplayName(hwndOwner, pbc, lpszDisplayName, pchEaten, ppidl, pdwAttributes);
318 szNext = lpszDisplayName;
323 szNext = lpszDisplayName;
342 if (*lpszDisplayName)
345 hr =
m_DesktopFSFolder->ParseDisplayName(hwndOwner, pbc, lpszDisplayName, pchEaten, ppidl, pdwAttributes);
349 return m_SharedDesktopFSFolder->ParseDisplayName(hwndOwner, pbc, lpszDisplayName, pchEaten, ppidl, pdwAttributes);
359 if (szNext && *szNext)
362 &pidlTemp, (
LPOLESTR) szNext, pchEaten, pdwAttributes);
366 if (pdwAttributes && *pdwAttributes)
378 TRACE (
"(%p)->(-- ret=0x%08x)\n",
this,
hr);
388 CComPtr<IEnumIDList> pRegEnumerator;
389 CComPtr<IEnumIDList> pDesktopEnumerator;
390 CComPtr<IEnumIDList> pCommonDesktopEnumerator;
395 ERR(
"EnumObjects for reg folder failed\n");
399 ERR(
"EnumObjects for desktop fs folder failed\n");
403 ERR(
"EnumObjects for shared desktop fs folder failed\n");
405 return ShellObjectCreatorInit<CDesktopFolderEnum>(
dwFlags,pRegEnumerator, pDesktopEnumerator, pCommonDesktopEnumerator,
IID_PPV_ARG(
IEnumIDList, ppEnumIDList));
420 CComPtr<IShellFolder2> psf;
425 return psf->BindToObject(pidl, pbcReserved,
riid, ppvOut);
437 FIXME (
"(%p)->(pidl=%p,%p,%s,%p) stub\n",
449 bool bIsDesktopFolder1, bIsDesktopFolder2;
451 if (!pidl1 || !pidl2)
453 ERR(
"Got null pidl pointer (%Ix %p %p)!\n",
lParam, pidl1, pidl2);
459 if (bIsDesktopFolder1 || bIsDesktopFolder2)
478 TRACE (
"(%p)->(hwnd=%p,%s,%p)\n",
497 dcm.
hwnd = hwndOwner;
513 TRACE (
"-- (%p)->(interface=%p)\n",
this, ppvOut);
527 TRACE(
"(%p)->(cidl=%d apidl=%p mask=%p (0x%08x))\n",
528 this, cidl, apidl, rgfInOut, rgfInOut ? *rgfInOut : 0);
541 for (
UINT i = 0;
i < cidl; ++
i)
552 CComPtr<IShellFolder2> psf;
557 psf->GetAttributesOf(1, &apidl[
i], rgfInOut);
560 ERR(
"Got an unknown pidl type!!!\n");
564 *rgfInOut &= ~SFGAO_VALIDATE;
566 TRACE(
"-- result=0x%08x\n", *rgfInOut);
594 TRACE (
"(%p)->(%p,%u,apidl=%p,%s,%p,%p)\n",
604 CComPtr<IShellFolder2> psf;
609 return psf->GetUIObjectOf(hwndOwner, cidl, apidl,
riid, prgfInOut, ppvOut);
631 dcm.
hwnd = hwndOwner;
653 CComPtr<IShellFolder> psfChild;
658 return psfChild->CreateViewObject(
NULL,
riid, ppvOut);
667 TRACE (
"(%p)->hr=0x%08x\n",
this,
hr);
679 TRACE (
"(%p)->(pidl=%p,0x%08x,%p)\n",
this, pidl,
dwFlags, strRet);
698 CComPtr<IShellFolder2> psf;
703 return psf->GetDisplayNameOf(pidl,
dwFlags, strRet);
725 CComPtr<IShellFolder2> psf;
730 return psf->SetNameOf(hwndOwner, pidl,
lpName,
dwFlags, pPidlOut);
735 FIXME (
"(%p)\n",
this);
741 FIXME (
"(%p)\n",
this);
747 TRACE (
"(%p)\n",
this);
759 TRACE (
"(%p)\n",
this);
774 FIXME (
"(%p)\n",
this);
794 CComPtr<IShellFolder2> psf;
799 hr = psf->GetDetailsOf(pidl, iColumn, psd);
808 FIXME (
"(%p)\n",
this);
814 TRACE (
"(%p)\n",
this);
819 *lpClassId = CLSID_ShellDesktop;
826 TRACE (
"(%p)->(%p)\n",
this, pidl);
836 TRACE (
"(%p)->(%p)\n",
this, pidl);
891 TRACE(
"-- %p->(%p)\n",psf, *psf);
BOOL _ILIsDesktop(LPCITEMIDLIST pidl)
HRESULT WINAPI SHCreateShellFolderView(const SFV_CREATE *pcsfv, IShellView **ppsv)
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
static INT IsNamespaceExtensionHidden(const WCHAR *iid)
HRESULT WINAPI IEParseDisplayNameWithBCW(DWORD codepage, LPCWSTR lpszDisplayName, LPBC pbc, LPITEMIDLIST *ppidl)
static const DWORD dwMyComputerAttributes
#define DESKTOPSHELLVIEWCOLUMNS
static const WCHAR ClassicStartMenuW[]
static const shvheader DesktopSFHeader[]
static const DWORD dwDesktopAttributes
static DWORD dwMyNetPlacesAttributes
int SHELL_ConfirmMsgBox(HWND hWnd, LPWSTR lpszText, LPWSTR lpszCaption, HICON hIcon, BOOL bYesToAll)
static HRESULT SHELL32_CoCreateInitSF(LPCITEMIDLIST pidlRoot, PERSIST_FOLDER_TARGET_INFO *ppfti, LPCITEMIDLIST pidlChild, const GUID *clsid, REFIID riid, LPVOID *ppvOut)
HRESULT IDataObject_Constructor(HWND hwndOwner, PCIDLIST_ABSOLUTE pMyPidl, PCUIDLIST_RELATIVE_ARRAY apidl, UINT cidl, BOOL bExtendedObject, IDataObject **dataObject)
HRESULT CRegFolder_CreateInstance(const GUID *pGuid, LPCITEMIDLIST pidlRoot, LPCWSTR lpszPath, LPCWSTR lpszEnumKeyName, REFIID riid, void **ppv)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
void shell(int argc, const char *argv[])
#define RegCloseKey(hKey)
HRESULT WINAPI Initialize(DWORD dwFlags, IEnumIDList *pRegEnumerator, IEnumIDList *pDesktopEnumerator, IEnumIDList *pCommonDesktopEnumerator)
void AddItemsFromClassicStartMenuKey(HKEY hKeyRoot)
virtual HRESULT WINAPI BindToStorage(PCUIDLIST_RELATIVE pidl, LPBC pbcReserved, REFIID riid, LPVOID *ppvOut)
virtual HRESULT WINAPI EnumObjects(HWND hwndOwner, DWORD dwFlags, LPENUMIDLIST *ppEnumIDList)
virtual HRESULT WINAPI BindToObject(PCUIDLIST_RELATIVE pidl, LPBC pbcReserved, REFIID riid, LPVOID *ppvOut)
CComPtr< IShellFolder2 > m_SharedDesktopFSFolder
virtual HRESULT WINAPI CreateViewObject(HWND hwndOwner, REFIID riid, LPVOID *ppvOut)
HRESULT WINAPI FinalConstruct()
virtual HRESULT WINAPI ParseDisplayName(HWND hwndOwner, LPBC pbc, LPOLESTR lpszDisplayName, DWORD *pchEaten, PIDLIST_RELATIVE *ppidl, DWORD *pdwAttributes)
virtual HRESULT WINAPI GetDisplayNameOf(PCUITEMID_CHILD pidl, DWORD dwFlags, LPSTRRET strRet)
virtual HRESULT WINAPI SetNameOf(HWND hwndOwner, PCUITEMID_CHILD pidl, LPCOLESTR lpName, DWORD dwFlags, PITEMID_CHILD *pPidlOut)
virtual HRESULT WINAPI GetUIObjectOf(HWND hwndOwner, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, REFIID riid, UINT *prgfInOut, LPVOID *ppvOut)
virtual HRESULT WINAPI CallBack(IShellFolder *psf, HWND hwndOwner, IDataObject *pdtobj, UINT uMsg, WPARAM wParam, LPARAM lParam)
virtual HRESULT WINAPI MapColumnToSCID(UINT column, SHCOLUMNID *pscid)
virtual HRESULT WINAPI GetDetailsOf(PCUITEMID_CHILD pidl, UINT iColumn, SHELLDETAILS *psd)
virtual HRESULT WINAPI GetDefaultColumn(DWORD dwRes, ULONG *pSort, ULONG *pDisplay)
virtual HRESULT WINAPI GetClassID(CLSID *lpClassId)
virtual HRESULT WINAPI GetCurFolder(PIDLIST_ABSOLUTE *pidl)
virtual HRESULT WINAPI GetAttributesOf(UINT cidl, PCUITEMID_CHILD_ARRAY apidl, DWORD *rgfInOut)
virtual HRESULT WINAPI Initialize(PCIDLIST_ABSOLUTE pidl)
HRESULT _GetSFFromPidl(LPCITEMIDLIST pidl, IShellFolder2 **psf)
virtual HRESULT WINAPI CompareIDs(LPARAM lParam, PCUIDLIST_RELATIVE pidl1, PCUIDLIST_RELATIVE pidl2)
CComPtr< IShellFolder2 > m_DesktopFSFolder
virtual HRESULT WINAPI GetDefaultSearchGUID(GUID *pguid)
CComPtr< IShellFolder2 > m_regFolder
virtual HRESULT WINAPI GetDefaultColumnState(UINT iColumn, DWORD *pcsFlags)
virtual HRESULT WINAPI EnumSearches(IEnumExtraSearch **ppenum)
virtual HRESULT WINAPI GetDetailsEx(PCUITEMID_CHILD pidl, const SHCOLUMNID *pscid, VARIANT *pv)
BOOL HasItemWithCLSID(LPITEMIDLIST pidl)
BOOL AddToEnumList(LPITEMIDLIST pidl)
HRESULT AppendItemsFromEnumerator(IEnumIDList *pEnum)
void pdump(LPCITEMIDLIST pidl)
const char * shdebugstr_guid(const struct _GUID *id)
#define IDS_SHV_COLUMN_TYPE
#define IDS_SHV_COLUMN_NAME
#define GET_SHGDN_RELATION(dwFlags)
#define DFM_MERGECONTEXTMENU
#define DFM_INVOKECOMMAND
#define GET_SHGDN_FOR(dwFlags)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LSTATUS WINAPI RegGetValueW(HKEY hKey, LPCWSTR pszSubKey, LPCWSTR pszValue, DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData)
LONG WINAPI RegEnumValueW(_In_ HKEY hKey, _In_ DWORD index, _Out_ LPWSTR value, _Inout_ PDWORD val_count, _Reserved_ PDWORD reserved, _Out_opt_ PDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ PDWORD count)
BOOL WINAPI _ILIsPidlSimple(LPCITEMIDLIST pidl)
#define FAILED_UNEXPECTEDLY(hr)
LPITEMIDLIST SHELL32_CreatePidlFromBindCtx(IBindCtx *pbc, LPCWSTR path)
HRESULT WINAPI Shell_DefaultContextMenuCallBack(IShellFolder *psf, IDataObject *pdtobj)
void WINAPI SHFree(LPVOID pv)
LPVOID WINAPI SHAlloc(SIZE_T len)
BOOL WINAPI SHGetSpecialFolderPathW(HWND hwndOwner, LPWSTR szPath, int nFolder, BOOL bCreate)
int WINAPI PathGetDriveNumberW(const WCHAR *path)
BOOL WINAPI PathIsUNCW(LPCWSTR lpszPath)
HRESULT WINAPI ParseURLW(LPCWSTR x, PARSEDURLW *y)
static BOOL _ILIsSpecialFolder(LPCITEMIDLIST pidl)
GLdouble GLdouble GLdouble r
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
HRESULT Next([in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] PITEMID_CHILD *rgelt, [out] ULONG *pceltFetched)
#define COM_INTERFACE_ENTRY_IID(iid, x)
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
unsigned __int3264 UINT_PTR
interface IBindCtx * LPBC
const GUID IID_IDataObject
#define PathAddBackslashW
LPITEMIDLIST _ILCreateMyComputer(void)
LPITEMIDLIST _ILCreateIExplore(void)
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
LPITEMIDLIST _ILCreateDesktop(void)
LPITEMIDLIST _ILCreateNetwork(void)
BOOL _ILIsFolder(LPCITEMIDLIST pidl)
BOOL _ILIsMyComputer(LPCITEMIDLIST pidl)
BOOL _ILIsNetHood(LPCITEMIDLIST pidl)
LPITEMIDLIST _ILCreateGuidFromStrW(LPCWSTR szGUID)
IID * _ILGetGUIDPointer(LPCITEMIDLIST pidl)
BOOL _ILIsValue(LPCITEMIDLIST pidl)
LPITEMIDLIST _ILCreateMyDocuments(void)
DWORD _ILSimpleGetTextW(LPCITEMIDLIST pidl, LPWSTR szOut, UINT uOutSize)
#define IsEqualIID(riid1, riid2)
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
HRESULT WINAPI IEParseDisplayNameWithBCW(DWORD codepage, LPCWSTR lpszDisplayName, LPBC pbc, LPITEMIDLIST *ppidl)
#define MAKE_COMPARE_HRESULT(x)
HRESULT SHELL32_GetDisplayNameOfChild(IShellFolder2 *psf, LPCITEMIDLIST pidl, DWORD dwFlags, LPSTRRET strRet)
static __inline int SHELL32_GUIDToStringW(REFGUID guid, LPWSTR str)
void AddClassKeyToArray(const WCHAR *szClass, HKEY *array, UINT *cKeys)
HRESULT SHELL32_ParseNextElement(IShellFolder2 *psf, HWND hwndOwner, LPBC pbc, LPITEMIDLIST *pidlInOut, LPOLESTR szNext, DWORD *pEaten, DWORD *pdwAttributes)
void AddFSClassKeysToArray(PCUITEMID_CHILD pidl, HKEY *array, UINT *cKeys)
void WINAPI _InsertMenuItemW(HMENU hmenu, UINT indexMenu, BOOL fByPosition, UINT wID, UINT fType, LPCWSTR dwTypeData, UINT fState)
HINSTANCE WINAPI ShellExecuteW(HWND hwnd, LPCWSTR lpVerb, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd)
#define CSIDL_COMMON_DESKTOPDIRECTORY
#define CSIDL_DESKTOPDIRECTORY
struct _SFV_CREATE SFV_CREATE
#define DFM_CMD_PROPERTIES
#define IDS_SHV_COLUMN_SIZE
#define IDS_SHV_COLUMN_MODIFIED
#define IDS_SHV_COLUMN_COMMENTS
#define IDS_SHV_COLUMN_ATTRIBUTES
ITEMIDLIST UNALIGNED * LPITEMIDLIST
const PCUITEMID_CHILD * PCUITEMID_CHILD_ARRAY
const ITEMID_CHILD UNALIGNED * PCUITEMID_CHILD
const ITEMIDLIST_RELATIVE UNALIGNED * PCUIDLIST_RELATIVE
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
#define INVALID_FILE_ATTRIBUTES
#define GetFileAttributes
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define HKEY_LOCAL_MACHINE
#define HKEY_CURRENT_USER
HMENU WINAPI CreatePopupMenu(void)
BOOL WINAPI DestroyMenu(_In_ HMENU)
#define MAKEINTRESOURCEW(i)
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
#define IID_PPV_ARG(Itype, ppType)