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}";
143 while((
S_OK == pRegEnumerator->
Next(1, &pidl, &dwFetched)) && dwFetched)
181 #define DESKTOPSHELLVIEWCOLUMNS 6 184 SFGAO_HASSUBFOLDER | SFGAO_FILESYSTEM | SFGAO_FOLDER | SFGAO_FILESYSANCESTOR |
185 SFGAO_STORAGEANCESTOR | SFGAO_HASPROPSHEET | SFGAO_STORAGE;
187 SFGAO_CANRENAME | SFGAO_CANDELETE | SFGAO_HASPROPSHEET | SFGAO_DROPTARGET |
188 SFGAO_FILESYSANCESTOR | SFGAO_FOLDER | SFGAO_HASSUBFOLDER | SFGAO_CANLINK;
190 SFGAO_CANRENAME | SFGAO_CANDELETE | SFGAO_HASPROPSHEET | SFGAO_DROPTARGET |
191 SFGAO_FILESYSANCESTOR | SFGAO_FOLDER | SFGAO_HASSUBFOLDER | SFGAO_CANLINK;
215 &CLSID_ShellFSFolder,
223 &CLSID_ShellFSFolder,
259 int cLen =
wcslen(szFileName);
283 DWORD *pdwAttributes)
290 TRACE (
"(%p)->(HWND=%p,%p,%p=%s,%p,pidl=%p,%p)\n",
291 this, hwndOwner, pbc, lpszDisplayName,
debugstr_w(lpszDisplayName),
292 pchEaten, ppidl, pdwAttributes);
299 if (!lpszDisplayName)
305 urldata.
cbSize =
sizeof(urldata);
307 if (lpszDisplayName[0] ==
':' && lpszDisplayName[1] ==
':')
309 return m_regFolder->ParseDisplayName(hwndOwner, pbc, lpszDisplayName, pchEaten, ppidl, pdwAttributes);
315 szNext = lpszDisplayName;
320 szNext = lpszDisplayName;
339 if (*lpszDisplayName)
342 hr =
m_DesktopFSFolder->ParseDisplayName(hwndOwner, pbc, lpszDisplayName, pchEaten, ppidl, pdwAttributes);
346 return m_SharedDesktopFSFolder->ParseDisplayName(hwndOwner, pbc, lpszDisplayName, pchEaten, ppidl, pdwAttributes);
356 if (szNext && *szNext)
359 &pidlTemp, (
LPOLESTR) szNext, pchEaten, pdwAttributes);
363 if (pdwAttributes && *pdwAttributes)
375 TRACE (
"(%p)->(-- ret=0x%08x)\n",
this,
hr);
385 CComPtr<IEnumIDList> pRegEnumerator;
386 CComPtr<IEnumIDList> pDesktopEnumerator;
387 CComPtr<IEnumIDList> pCommonDesktopEnumerator;
392 ERR(
"EnumObjects for reg folder failed\n");
396 ERR(
"EnumObjects for desktop fs folder failed\n");
400 ERR(
"EnumObjects for shared desktop fs folder failed\n");
402 return ShellObjectCreatorInit<CDesktopFolderEnum>(
dwFlags,pRegEnumerator, pDesktopEnumerator, pCommonDesktopEnumerator,
IID_PPV_ARG(
IEnumIDList, ppEnumIDList));
417 CComPtr<IShellFolder2> psf;
422 return psf->BindToObject(pidl, pbcReserved,
riid, ppvOut);
434 FIXME (
"(%p)->(pidl=%p,%p,%s,%p) stub\n",
446 bool bIsDesktopFolder1, bIsDesktopFolder2;
448 if (!pidl1 || !pidl2)
450 ERR(
"Got null pidl pointer (%Ix %p %p)!\n",
lParam, pidl1, pidl2);
456 if (bIsDesktopFolder1 || bIsDesktopFolder2)
475 TRACE (
"(%p)->(hwnd=%p,%s,%p)\n",
494 dcm.
hwnd = hwndOwner;
510 TRACE (
"-- (%p)->(interface=%p)\n",
this, ppvOut);
524 TRACE(
"(%p)->(cidl=%d apidl=%p mask=%p (0x%08x))\n",
525 this, cidl, apidl, rgfInOut, rgfInOut ? *rgfInOut : 0);
538 for (
UINT i = 0;
i < cidl; ++
i)
549 CComPtr<IShellFolder2> psf;
554 psf->GetAttributesOf(1, &apidl[
i], rgfInOut);
557 ERR(
"Got an unknown pidl type!!!\n");
561 *rgfInOut &= ~SFGAO_VALIDATE;
563 TRACE(
"-- result=0x%08x\n", *rgfInOut);
591 TRACE (
"(%p)->(%p,%u,apidl=%p,%s,%p,%p)\n",
601 CComPtr<IShellFolder2> psf;
606 return psf->GetUIObjectOf(hwndOwner, cidl, apidl,
riid, prgfInOut, ppvOut);
628 dcm.
hwnd = hwndOwner;
650 CComPtr<IShellFolder> psfChild;
655 return psfChild->CreateViewObject(
NULL,
riid, ppvOut);
664 TRACE (
"(%p)->hr=0x%08x\n",
this,
hr);
676 TRACE (
"(%p)->(pidl=%p,0x%08x,%p)\n",
this, pidl,
dwFlags, strRet);
695 CComPtr<IShellFolder2> psf;
700 return psf->GetDisplayNameOf(pidl,
dwFlags, strRet);
722 CComPtr<IShellFolder2> psf;
727 return psf->SetNameOf(hwndOwner, pidl,
lpName,
dwFlags, pPidlOut);
732 FIXME (
"(%p)\n",
this);
738 FIXME (
"(%p)\n",
this);
744 TRACE (
"(%p)\n",
this);
756 TRACE (
"(%p)\n",
this);
771 FIXME (
"(%p)\n",
this);
791 CComPtr<IShellFolder2> psf;
796 hr = psf->GetDetailsOf(pidl, iColumn, psd);
805 FIXME (
"(%p)\n",
this);
811 TRACE (
"(%p)\n",
this);
816 *lpClassId = CLSID_ShellDesktop;
823 TRACE (
"(%p)->(%p)\n",
this, pidl);
833 TRACE (
"(%p)->(%p)\n",
this, pidl);
888 TRACE(
"-- %p->(%p)\n",psf, *psf);
LSTATUS WINAPI RegGetValueW(HKEY hKey, LPCWSTR pszSubKey, LPCWSTR pszValue, DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData)
void WINAPI _InsertMenuItemW(HMENU hmenu, UINT indexMenu, BOOL fByPosition, UINT wID, UINT fType, LPCWSTR dwTypeData, UINT fState)
virtual HRESULT WINAPI BindToObject(PCUIDLIST_RELATIVE pidl, LPBC pbcReserved, REFIID riid, LPVOID *ppvOut)
#define IDS_SHV_COLUMN_COMMENTS
static const DWORD dwDesktopAttributes
LPITEMIDLIST _ILCreateDesktop(void)
virtual HRESULT WINAPI ParseDisplayName(HWND hwndOwner, LPBC pbc, LPOLESTR lpszDisplayName, DWORD *pchEaten, PIDLIST_RELATIVE *ppidl, DWORD *pdwAttributes)
virtual HRESULT WINAPI GetAttributesOf(UINT cidl, PCUITEMID_CHILD_ARRAY apidl, DWORD *rgfInOut)
HRESULT WINAPI Initialize(DWORD dwFlags, IEnumIDList *pRegEnumerator, IEnumIDList *pDesktopEnumerator, IEnumIDList *pCommonDesktopEnumerator)
interface IBindCtx * LPBC
#define CSIDL_COMMON_DESKTOPDIRECTORY
#define GET_SHGDN_RELATION(dwFlags)
BOOL HasItemWithCLSID(LPITEMIDLIST pidl)
BOOL _ILIsMyComputer(LPCITEMIDLIST pidl)
virtual HRESULT WINAPI MapColumnToSCID(UINT column, SHCOLUMNID *pscid)
BOOL _ILIsNetHood(LPCITEMIDLIST pidl)
GLdouble GLdouble GLdouble r
BOOL AddToEnumList(LPITEMIDLIST pidl)
virtual HRESULT WINAPI SetNameOf(HWND hwndOwner, PCUITEMID_CHILD pidl, LPCOLESTR lpName, DWORD dwFlags, PITEMID_CHILD *pPidlOut)
HRESULT WINAPI IEParseDisplayNameWithBCW(DWORD codepage, LPCWSTR lpszDisplayName, LPBC pbc, LPITEMIDLIST *ppidl)
#define HKEY_CURRENT_USER
HRESULT WINAPI Shell_DefaultContextMenuCallBack(IShellFolder *psf, IDataObject *pdtobj)
void AddClassKeyToArray(const WCHAR *szClass, HKEY *array, UINT *cKeys)
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
virtual HRESULT WINAPI Initialize(PCIDLIST_ABSOLUTE pidl)
const char * shdebugstr_guid(const struct _GUID *id)
virtual HRESULT WINAPI GetDetailsEx(PCUITEMID_CHILD pidl, const SHCOLUMNID *pscid, VARIANT *pv)
const ITEMID_CHILD UNALIGNED * PCUITEMID_CHILD
void AddItemsFromClassicStartMenuKey(HKEY hKeyRoot)
const GUID IID_IDataObject
#define MAKE_COMPARE_HRESULT(x)
CComPtr< IShellFolder2 > m_DesktopFSFolder
virtual HRESULT WINAPI GetDefaultColumnState(UINT iColumn, DWORD *pcsFlags)
HRESULT WINAPI SHCreateShellFolderView(const SFV_CREATE *pcsfv, IShellView **ppsv)
static const WCHAR ClassicStartMenuW[]
#define IID_PPV_ARG(Itype, ppType)
HRESULT Next([in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] PITEMID_CHILD *rgelt, [out] ULONG *pceltFetched)
#define IDS_SHV_COLUMN_TYPE
#define IDS_SHV_COLUMN_SIZE
const PCUITEMID_CHILD * PCUITEMID_CHILD_ARRAY
static BOOL _ILIsSpecialFolder(LPCITEMIDLIST pidl)
LPWSTR WINAPI PathAddBackslashW(LPWSTR lpszPath)
#define GET_SHGDN_FOR(dwFlags)
#define DESKTOPSHELLVIEWCOLUMNS
BOOL _ILIsFolder(LPCITEMIDLIST pidl)
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)
#define DFM_INVOKECOMMAND
_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
HRESULT IDataObject_Constructor(HWND hwndOwner, PCIDLIST_ABSOLUTE pMyPidl, PCUIDLIST_RELATIVE_ARRAY apidl, UINT cidl, BOOL bExtendedObject, IDataObject **dataObject)
virtual HRESULT WINAPI GetUIObjectOf(HWND hwndOwner, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, REFIID riid, UINT *prgfInOut, LPVOID *ppvOut)
CComPtr< IShellFolder2 > m_SharedDesktopFSFolder
HRESULT SHELL32_GetDisplayNameOfChild(IShellFolder2 *psf, LPCITEMIDLIST pidl, DWORD dwFlags, LPSTRRET strRet)
DWORD _ILSimpleGetTextW(LPCITEMIDLIST pidl, LPWSTR szOut, UINT uOutSize)
virtual HRESULT WINAPI EnumSearches(IEnumExtraSearch **ppenum)
struct _SFV_CREATE SFV_CREATE
LPITEMIDLIST _ILCreateMyComputer(void)
BOOL _ILIsDesktop(LPCITEMIDLIST pidl)
BOOL WINAPI _ILIsPidlSimple(LPCITEMIDLIST pidl)
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
HRESULT SHELL32_ParseNextElement(IShellFolder2 *psf, HWND hwndOwner, LPBC pbc, LPITEMIDLIST *pidlInOut, LPOLESTR szNext, DWORD *pEaten, DWORD *pdwAttributes)
LPITEMIDLIST _ILCreateGuidFromStrW(LPCWSTR szGUID)
HRESULT CRegFolder_CreateInstance(const GUID *pGuid, LPCITEMIDLIST pidlRoot, LPCWSTR lpszPath, LPCWSTR lpszEnumKeyName, REFIID riid, void **ppv)
int SHELL_ConfirmMsgBox(HWND hWnd, LPWSTR lpszText, LPWSTR lpszCaption, HICON hIcon, BOOL bYesToAll)
virtual HRESULT WINAPI CompareIDs(LPARAM lParam, PCUIDLIST_RELATIVE pidl1, PCUIDLIST_RELATIVE pidl2)
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
virtual HRESULT WINAPI GetDefaultSearchGUID(GUID *pguid)
IID * _ILGetGUIDPointer(LPCITEMIDLIST pidl)
LPITEMIDLIST SHELL32_CreatePidlFromBindCtx(IBindCtx *pbc, LPCWSTR path)
#define FAILED_UNEXPECTEDLY(hr)
#define DFM_MERGECONTEXTMENU
virtual HRESULT WINAPI GetCurFolder(PIDLIST_ABSOLUTE *pidl)
#define DFM_CMD_PROPERTIES
HRESULT AppendItemsFromEnumerator(IEnumIDList *pEnum)
unsigned __int3264 UINT_PTR
#define INVALID_FILE_ATTRIBUTES
static __inline int SHELL32_GUIDToStringW(REFGUID guid, LPWSTR str)
virtual HRESULT WINAPI CreateViewObject(HWND hwndOwner, REFIID riid, LPVOID *ppvOut)
virtual HRESULT WINAPI GetClassID(CLSID *lpClassId)
HRESULT WINAPI ParseURLW(LPCWSTR x, PARSEDURLW *y)
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
virtual HRESULT WINAPI BindToStorage(PCUIDLIST_RELATIVE pidl, LPBC pbcReserved, REFIID riid, LPVOID *ppvOut)
BOOL _ILIsValue(LPCITEMIDLIST pidl)
virtual HRESULT WINAPI GetDefaultColumn(DWORD dwRes, ULONG *pSort, ULONG *pDisplay)
WINE_DEFAULT_DEBUG_CHANNEL(shell)
#define IDS_SHV_COLUMN_MODIFIED
#define GetFileAttributes
BOOL WINAPI DestroyMenu(_In_ HMENU)
static INT IsNamespaceExtensionHidden(const WCHAR *iid)
virtual HRESULT WINAPI GetDisplayNameOf(PCUITEMID_CHILD pidl, DWORD dwFlags, LPSTRRET strRet)
LPITEMIDLIST _ILCreateNetwork(void)
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
BOOL WINAPI SHGetSpecialFolderPathW(HWND hwndOwner, LPWSTR szPath, int nFolder, BOOL bCreate)
static const DWORD dwMyComputerAttributes
void shell(int argc, const char *argv[])
void AddFSClassKeysToArray(PCUITEMID_CHILD pidl, HKEY *array, UINT *cKeys)
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
#define COM_INTERFACE_ENTRY_IID(iid, x)
void pdump(LPCITEMIDLIST pidl)
static const shvheader DesktopSFHeader[]
static DWORD dwMyNetPlacesAttributes
virtual HRESULT WINAPI GetDetailsOf(PCUITEMID_CHILD pidl, UINT iColumn, SHELLDETAILS *psd)
CComPtr< IShellFolder2 > m_regFolder
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
int WINAPI PathGetDriveNumberW(const WCHAR *path)
HMENU WINAPI CreatePopupMenu(void)
void WINAPI SHFree(LPVOID pv)
const ITEMIDLIST_RELATIVE UNALIGNED * PCUIDLIST_RELATIVE
static HRESULT SHELL32_CoCreateInitSF(LPCITEMIDLIST pidlRoot, PERSIST_FOLDER_TARGET_INFO *ppfti, LPCITEMIDLIST pidlChild, const GUID *clsid, REFIID riid, LPVOID *ppvOut)
HINSTANCE WINAPI ShellExecuteW(HWND hwnd, LPCWSTR lpVerb, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd)
virtual HRESULT WINAPI EnumObjects(HWND hwndOwner, DWORD dwFlags, LPENUMIDLIST *ppEnumIDList)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
HRESULT _GetSFFromPidl(LPCITEMIDLIST pidl, IShellFolder2 **psf)
#define MAKEINTRESOURCEW(i)
#define CSIDL_DESKTOPDIRECTORY
#define IDS_SHV_COLUMN_NAME
BOOL WINAPI PathIsUNCW(LPCWSTR lpszPath)
LPITEMIDLIST _ILCreateMyDocuments(void)
virtual HRESULT WINAPI CallBack(IShellFolder *psf, HWND hwndOwner, IDataObject *pdtobj, UINT uMsg, WPARAM wParam, LPARAM lParam)
ITEMIDLIST UNALIGNED * LPITEMIDLIST
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
HRESULT WINAPI FinalConstruct()
LPVOID WINAPI SHAlloc(SIZE_T len)
#define RegCloseKey(hKey)
#define IDS_SHV_COLUMN_ATTRIBUTES
#define IsEqualIID(riid1, riid2)
#define HKEY_LOCAL_MACHINE