34#define IDM_UNDOCKCOMPUTER 410
35#define IDM_TASKBARANDSTARTMENU 413
36#define IDM_LASTSTARTMENU_SEPARATOR 450
37#define IDM_DOCUMENTS 501
38#define IDM_HELPANDSUPPORT 503
39#define IDM_PROGRAMS 504
40#define IDM_CONTROLPANEL 505
41#define IDM_SHUTDOWN 506
42#define IDM_FAVORITES 507
43#define IDM_SETTINGS 508
44#define IDM_PRINTERSANDFAXES 510
46#define IDM_SYNCHRONIZE 553
47#define IDM_NETWORKCONNECTIONS 557
48#define IDM_DISCONNECT 5000
49#define IDM_SECURITY 5001
60 public CComObjectRootEx<CComMultiThreadModelNoCS>,
143#ifdef TEST_TRACKPOPUPMENU_SUBMENUS
161 ERR(
"SHGetSpecialFolderPathW failed\n");
201 hr = pShellMenu->
Initialize(
this, 0, ANCESTORDEFAULT, SMINIT_VERTICAL);
231 ERR(
"CreateRecentMenu failed\n");
315 ERR(
"SHGetSpecialFolderPathW failed\n");
322 ERR(
"SHGetSpecialFolderPathW failed\n");
391 CComPtr<IShellFolder> psfDesktop;
409 CComPtr<IShellFolder> psfUserStartMenu;
410 CComPtr<IShellFolder> psfCommonStartMenu;
411 CComPtr<IAugmentedShellFolder> pasf;
413 *ppsfStartMenu =
NULL;
418 WARN(
"Failed to get the USER start menu folder. Trying to run with just the COMMON one.\n");
424 TRACE(
"COMMON start menu obtained.\n");
426 ILFree(pidlCommonStartMenu);
436 WARN(
"Failed to get the COMMON start menu folder. Will use only the USER contents.\n");
438 ILFree(pidlUserStartMenu);
442 TRACE(
"Both COMMON and USER statr menu folders obtained, merging them...\n");
455 *ppsfStartMenu = psfUserStartMenu.Detach();
456 ILFree(pidlCommonStartMenu);
457 ILFree(pidlUserStartMenu);
461 hr = pasf->AddNameSpace(
NULL, psfUserStartMenu, pidlUserStartMenu, 0xFF00);
465 hr = pasf->AddNameSpace(
NULL, psfCommonStartMenu, pidlCommonStartMenu, 0);
472 ILFree(pidlCommonStartMenu);
473 ILFree(pidlUserStartMenu);
492 CComPtr<IShellMenu> pShellMenu;
493 CComPtr<IBandSite> pBandSite;
494 CComPtr<IDeskBar> pDeskBar;
501 CComPtr<IShellFolder> psfPrograms;
515 CComObject<CShellMenuCallback> *
pCallback;
516 hr = CComObject<CShellMenuCallback>::CreateInstance(&
pCallback);
521 pCallback->Initialize(pShellMenu, pBandSite, pDeskBar);
523 hr = pShellMenu->Initialize(
pCallback, (
UINT) -1, 0, SMINIT_TOPLEVEL | SMINIT_VERTICAL);
536 WARN(
"USER Programs folder not found.\n");
543 CComPtr<IShellFolder> psfParent;
551 hr = psfParent->GetDisplayNameOf(pcidlPrograms, SHGDN_FORPARSING | SHGDN_INFOLDER, &
str);
556 ILFree(pidlProgramsAbsolute);
568 hr =
pCallback->_SetProgramsFolder(psfPrograms, pidlPrograms);
572 hr = pShellMenu->SetShellFolder(psf,
NULL,
NULL, SMSET_TOP);
576 hr = pDeskBar->SetClient(pBandSite);
580 hr = pBandSite->AddBand(pShellMenu);
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define STDMETHODCALLTYPE
HRESULT WINAPI SHGetSpecialFolderLocation(HWND hwndOwner, INT nFolder, LPITEMIDLIST *ppidl)
HRESULT WINAPI SHGetFolderLocation(HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwReserved, LPITEMIDLIST *ppidl)
BOOL WINAPI SHGetSpecialFolderPathW(HWND hwndOwner, LPWSTR szPath, int nFolder, BOOL bCreate)
HRESULT WINAPI IUnknown_GetSite(LPUNKNOWN lpUnknown, REFIID iid, PVOID *lppSite)
HRESULT WINAPI IUnknown_GetWindow(IUnknown *lpUnknown, HWND *lphWnd)
LPWSTR WINAPI PathFindFileNameW(LPCWSTR lpszPath)
FxPnpStateCallbackInfo * pCallback
EXTERN_C INT WINAPI Shell_GetCachedImageIndex(LPCWSTR szPath, INT nIndex, UINT bSimulateDoc)
HRESULT ParseDisplayName([in] HWND hwndOwner, [in] LPBC pbcReserved, [in, string] LPOLESTR lpszDisplayName, [out] ULONG *pchEaten, [out] PIDLIST_RELATIVE *ppidl, [in, out, unique] ULONG *pdwAttributes)
HRESULT BindToObject([in] PCUIDLIST_RELATIVE pidl, [in] LPBC pbcReserved, [in] REFIID riid, [out, iid_is(riid)] void **ppvOut)
HRESULT CompareIDs([in] LPARAM lParam, [in] PCUIDLIST_RELATIVE pidl1, [in] PCUIDLIST_RELATIVE pidl2)
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
#define COM_INTERFACE_ENTRY_IID(iid, x)
#define DECLARE_PROTECT_FINAL_CONSTRUCT()
#define DECLARE_NOT_AGGREGATABLE(x)
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
void WINAPI ILFree(LPITEMIDLIST pidl)
HRESULT WINAPI SHBindToParent(LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv, LPCITEMIDLIST *ppidlLast)
#define IsEqualIID(riid1, riid2)
#define FAILED_UNEXPECTEDLY(hr)
HINSTANCE WINAPI ShellExecuteW(HWND hwnd, LPCWSTR lpVerb, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd)
#define CSIDL_MYDOCUMENTS
#define CSIDL_COMMON_STARTMENU
#define CSIDL_COMMON_PROGRAMS
#define IDI_SHELL_MY_DOCUMENTS
#define IDI_SHELL_SEARCH1
#define IDI_SHELL_FAVOTITES
#define IDI_SHELL_MY_PICTURES
#define IDI_SHELL_TSKBAR_STARTMENU
#define IDI_SHELL_PRINTER2
#define IDI_SHELL_PROGRAMS_FOLDER1
#define IDI_SHELL_CONTROL_PANEL1
#define IDI_SHELL_LOGOFF1
#define IDI_SHELL_RECENT_DOCUMENTS1
#define IDI_SHELL_SHUTDOWN1
#define IDI_SHELL_NETWORK_CONNECTIONS2
#define IDI_SHELL_CONTROL_PANEL
ITEMIDLIST UNALIGNED * LPITEMIDLIST
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
HMENU WINAPI CreatePopupMenu(void)
int WINAPI GetMenuItemCount(_In_opt_ HMENU)
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HMENU WINAPI CreateMenu(void)
BOOL WINAPI DestroyMenu(_In_ HMENU)
BOOL WINAPI GetMenuItemInfoW(_In_ HMENU, _In_ UINT, _In_ BOOL, _Inout_ LPMENUITEMINFOW)
BOOL WINAPI InsertMenuItemW(_In_ HMENU, _In_ UINT, _In_ BOOL, _In_ LPCMENUITEMINFOW)
BOOL WINAPI AppendMenuW(_In_ HMENU, _In_ UINT, _In_ UINT_PTR, _In_opt_ LPCWSTR)
#define IID_PPV_ARG(Itype, ppType)