2016-07-30 11:53:16 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#define USE_CUSTOM_MENUBAND 1
|
|
|
|
#define USE_CUSTOM_MERGEDFOLDER 1
|
|
|
|
#define USE_CUSTOM_ADDRESSBAND 1
|
|
|
|
#define USE_CUSTOM_ADDRESSEDITBOX 1
|
|
|
|
#define USE_CUSTOM_BANDPROXY 1
|
|
|
|
#define USE_CUSTOM_BRANDBAND 1
|
|
|
|
#define USE_CUSTOM_EXPLORERBAND 1
|
|
|
|
#define USE_CUSTOM_INTERNETTOOLBAR 1
|
|
|
|
|
|
|
|
/* Constructors for the classes that are not exported */
|
2016-11-04 23:56:02 +00:00
|
|
|
HRESULT CShellBrowser_CreateInstance(LPITEMIDLIST pidl, DWORD dwFlags, REFIID riid, void **ppv);
|
2016-07-30 11:53:16 +00:00
|
|
|
HRESULT CTravelLog_CreateInstance(REFIID riid, void **ppv);
|
|
|
|
HRESULT CBaseBar_CreateInstance(REFIID riid, void **ppv, BOOL vertical);
|
|
|
|
HRESULT CBaseBarSite_CreateInstance(REFIID riid, void **ppv, BOOL bVertical);
|
|
|
|
HRESULT CToolsBand_CreateInstance(REFIID riid, void **ppv);
|
|
|
|
|
|
|
|
static inline
|
|
|
|
HRESULT CAddressBand_CreateInstance(REFIID riid, void **ppv)
|
|
|
|
{
|
|
|
|
#if USE_CUSTOM_ADDRESSBAND
|
|
|
|
return ShellObjectCreator<CAddressBand>(riid, ppv);
|
|
|
|
#else
|
|
|
|
return CoCreateInstance(CLSID_SH_AddressBand, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARG(IUnknown, toolsBar));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline
|
|
|
|
HRESULT CAddressEditBox_CreateInstance(REFIID riid, void **ppv)
|
|
|
|
{
|
|
|
|
#if USE_CUSTOM_ADDRESSEDITBOX
|
|
|
|
return ShellObjectCreator<CAddressEditBox>(riid, ppv);
|
|
|
|
#else
|
|
|
|
return CoCreateInstance(CLSID_AddressEditBox, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARG(riid, &ppv));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline
|
|
|
|
HRESULT CBandProxy_CreateInstance(REFIID riid, void **ppv)
|
|
|
|
{
|
|
|
|
#if USE_CUSTOM_BANDPROXY
|
|
|
|
return ShellObjectCreator<CBandProxy>(riid, ppv);
|
|
|
|
#else
|
|
|
|
return CoCreateInstance(CLSID_BandProxy, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARG(riid, &ppv));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline
|
|
|
|
HRESULT CBrandBand_CreateInstance(REFIID riid, void **ppv)
|
|
|
|
{
|
|
|
|
#if USE_CUSTOM_BRANDBAND
|
|
|
|
return ShellObjectCreator<CBrandBand>(riid, ppv);
|
|
|
|
#else
|
|
|
|
return CoCreateInstance(CLSID_BrandBand, NULL, CLSCTX_INPROC_SERVER, riid, ppv);
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline
|
|
|
|
HRESULT WINAPI CExplorerBand_CreateInstance(REFIID riid, LPVOID *ppv)
|
|
|
|
{
|
|
|
|
#if USE_CUSTOM_EXPLORERBAND
|
|
|
|
return ShellObjectCreator<CExplorerBand>(riid, ppv);
|
|
|
|
#else
|
|
|
|
return CoCreateInstance(CLSID_ExplorerBand, NULL, CLSCTX_INPROC_SERVER, riid, ppv);
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline
|
|
|
|
HRESULT CInternetToolbar_CreateInstance(REFIID riid, void **ppv)
|
|
|
|
{
|
|
|
|
#if USE_CUSTOM_INTERNETTOOLBAR
|
|
|
|
return ShellObjectCreator<CInternetToolbar>(riid, ppv);
|
|
|
|
#else
|
|
|
|
return CoCreateInstance(CLSID_InternetToolbar, NULL, CLSCTX_INPROC_SERVER, riid, ppv);
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
typedef HRESULT(WINAPI * PMENUBAND_CONSTRUCTOR)(REFIID riid, void **ppv);
|
|
|
|
typedef HRESULT(WINAPI * PMERGEDFOLDER_CONSTRUCTOR)(REFIID riid, void **ppv);
|
|
|
|
|
|
|
|
static inline
|
|
|
|
HRESULT CMergedFolder_CreateInstance(REFIID riid, void **ppv)
|
|
|
|
{
|
|
|
|
#if USE_CUSTOM_MERGEDFOLDER
|
|
|
|
HMODULE hRShell = GetModuleHandle(L"rshell.dll");
|
|
|
|
if (!hRShell)
|
|
|
|
hRShell = LoadLibrary(L"rshell.dll");
|
|
|
|
|
|
|
|
if (hRShell)
|
|
|
|
{
|
|
|
|
PMERGEDFOLDER_CONSTRUCTOR pCMergedFolder_Constructor = (PMERGEDFOLDER_CONSTRUCTOR)
|
|
|
|
GetProcAddress(hRShell, "CMergedFolder_Constructor");
|
|
|
|
|
|
|
|
if (pCMergedFolder_Constructor)
|
|
|
|
{
|
|
|
|
return pCMergedFolder_Constructor(riid, ppv);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
return CoCreateInstance(CLSID_MergedFolder, NULL, CLSCTX_INPROC_SERVER, riid, ppv);
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline
|
|
|
|
HRESULT CMenuBand_CreateInstance(REFIID iid, LPVOID *ppv)
|
|
|
|
{
|
|
|
|
#if USE_CUSTOM_MENUBAND
|
|
|
|
HMODULE hRShell = GetModuleHandleW(L"rshell.dll");
|
|
|
|
|
|
|
|
if (!hRShell)
|
|
|
|
hRShell = LoadLibraryW(L"rshell.dll");
|
|
|
|
|
|
|
|
if (hRShell)
|
|
|
|
{
|
|
|
|
PMENUBAND_CONSTRUCTOR func = (PMENUBAND_CONSTRUCTOR) GetProcAddress(hRShell, "CMenuBand_Constructor");
|
|
|
|
if (func)
|
|
|
|
{
|
|
|
|
return func(iid , ppv);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
return CoCreateInstance(CLSID_MenuBand, NULL, CLSCTX_INPROC_SERVER, iid, ppv);
|
|
|
|
}
|