29 ppf3->InitializeEx(
NULL, pidlAbsolute, ppfti);
33 ppf->Initialize(pidlAbsolute);
37 return pShellFolder->QueryInterface(
riid, ppvOut);
65 ERR(
"failed to load string %p\n", dwTypeData);
104 ERR(
"Failed to create pidl from path\n");
110 int cbData =
sizeof(
WORD) + pathLen + lpLastFSPidl->mkid.cb;
116 *((
WORD *)
p) = cbData;
120 p += pathLen -
sizeof(
WCHAR);
124 memcpy(
p, lpLastFSPidl, lpLastFSPidl->mkid.cb);
125 p += lpLastFSPidl->mkid.cb;
134 if (!pidl || !pidl->mkid.cb)
136 return (
LPCWSTR) pidl->mkid.abID;
141 if (!pidl || !pidl->mkid.cb)
161 template<
typename TChar,
typename TString,
int (&StrNCmp)(const TChar *, const TChar *,
size_t)>
164 if (!lpFirst || lpSrch.IsEmpty() || !
cchMax)
169 if (!
StrNCmp(lpFirst, lpSrch, lpSrch.GetLength()))
170 return (
const TChar*)lpFirst;
179 return StrStrN<CHAR, CStringA, _strnicmp>(lpFirst, lpSrch,
cchMax) !=
NULL;
185 return StrStrN<WCHAR, CStringW, _wcsnicmp>(lpFirst, lpSrch,
cchMax) !=
NULL;
218 if ((
BufferSize >= 2) && (pBytes[0] == 0xFF) && (pBytes[1] == 0xFE))
223 else if ((
BufferSize >= 2) && (pBytes[0] == 0xFE) && (pBytes[1] == 0xFF))
228 else if ((
BufferSize >= 3) && (pBytes[0] == 0xEF) && (pBytes[1] == 0xBB) && (pBytes[2] == 0xBF))
247 #define IS_TEXT_UNKNOWN_FLAGS_MASK ((7 << 13) | (1 << 11)) 410 UINT uTotalFound = 0;
418 #define IS_DOTS(psz) ((psz)[0] == L'.' && ((psz)[1] == 0 || ((psz)[1] == L'.' && (psz)[2] == 0))) 419 if (
IS_DOTS(FindData.cFileName))
480 for (
IUnknown** pSubscriber = subscribers.
begin(); pSubscriber < subscribers.
end(); pSubscriber++)
497 DWORD SearchHiddenValue = 0;
551 SearchHiddenValue = 1;
553 SearchHiddenValue = 0;
562 TRACE(
"SearchHidden is '%d'.\n", SearchHiddenValue);
566 ERR(
"RegSetValueEx for \"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\SearchHidden\" Failed.\n");
572 ERR(
"RegOpenKey for \"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\" Failed.\n");
698 *ppEnumIDList =
NULL;
734 if (
riid == IID_IShellView)
738 sfvparams.
pshf =
this;
755 for (
UINT i = 0;
i < cidl;
i++)
760 return m_pisfInner->GetAttributesOf(cidl, aFSPidl, rgfInOut);
778 return m_pInner->QueryContextMenu(hMenu, indexMenu, idCmdFirst, idCmdLast,
uFlags);
785 return m_pInner->InvokeCommand(lpcmi);
796 for (
UINT i = 0;
i < cidl;
i++)
817 return m_pInner->GetCommandString(idCommand,
uFlags, lpReserved, lpszName, uMaxNameLen);
827 pObj->m_shellFolderView = pShellFolderView;
828 pObj->m_pInner = pInnerContextMenu;
842 return m_pisfInner->GetUIObjectOf(hwndOwner, cidl, apidl,
riid, prgfInOut, ppvOut);
847 for (
UINT i = 0;
i < cidl;
i++)
852 if (
riid == IID_IContextMenu)
866 hResult = pShellFolder->GetUIObjectOf(hwndOwner, cidl, aFSPidl,
riid, prgfInOut, (
LPVOID *)&pContextMenu);
872 return m_pisfInner->GetUIObjectOf(hwndOwner, cidl, aFSPidl,
riid, prgfInOut, ppvOut);
920 return pWebBrowser2->ShowBrowserBar(&searchBar,
NULL,
NULL);
943 &CLSID_ShellFSFolder,
950 if (pClassId ==
NULL)
952 *pClassId = CLSID_FindFolder;
STDMETHODIMP BindToStorage(PCUIDLIST_RELATIVE pidl, LPBC pbcReserved, REFIID riid, LPVOID *ppvOut)
static BOOL IsDataUnicode(IN PVOID Buffer, IN DWORD BufferSize, OUT ENCODING *Encoding OPTIONAL, OUT PDWORD SkipBytes OPTIONAL)
BOOL WINAPI FindNextFileW(IN HANDLE hFindFile, OUT LPWIN32_FIND_DATAW lpFindFileData)
#define WM_SEARCH_ADD_RESULT
STDMETHODIMP GetDefaultColumnState(UINT iColumn, DWORD *pcsFlags)
void WINAPI ILFree(LPITEMIDLIST pidl)
CComPtr< CFindFolder > pFindFolder
#define WideCharToMultiByte
STDMETHODIMP GetDefaultSearchGUID(GUID *pguid)
IShellFolderViewCB * psfvcb
interface IBindCtx * LPBC
static BOOL ContentsMatch(LPCWSTR szPath, _SearchData *pSearchData)
#define HKEY_CURRENT_USER
LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
#define IS_TEXT_UNICODE_NOT_ASCII_MASK
EXTERN_C HRESULT WINAPI SHOpenFolderAndSelectItems(PCIDLIST_ABSOLUTE pidlFolder, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, DWORD dwFlags)
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
#define INVALID_HANDLE_VALUE
const ITEMID_CHILD UNALIGNED * PCUITEMID_CHILD
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
#define IDS_SEARCH_FOLDER
#define MAKE_COMPARE_HRESULT(x)
LRESULT StartSearch(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
#define INVALID_FILE_SIZE
static DWORD WINAPI SearchThreadProc(LPVOID lpParameter)
static void WINAPI _InsertMenuItemW(HMENU hMenu, UINT indexMenu, BOOL fByPosition, UINT wID, UINT fType, LPCWSTR dwTypeData, UINT fState)
LRESULT StopSearch(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
HRESULT WINAPI SHCreateShellFolderView(const SFV_CREATE *pcsfv, IShellView **ppsv)
#define IID_PPV_ARG(Itype, ppType)
LPWSTR WINAPI StrDupW(LPCWSTR lpszStr)
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
static LPCWSTR _ILGetPath(LPCITEMIDLIST pidl)
#define IS_TEXT_UNICODE_SIGNATURE
STDMETHODIMP GetDetailsEx(PCUITEMID_CHILD pidl, const SHCOLUMNID *pscid, VARIANT *pv)
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
static BOOL AttribHiddenMatch(DWORD FileAttributes, _SearchData *pSearchData)
BOOL SubclassWindow(HWND hWnd)
STDMETHODIMP MessageSFVCB(UINT uMsg, WPARAM wParam, LPARAM lParam)
LONG WINAPI RegCloseKey(HKEY hKey)
void ReleaseBuffer(_In_ int nNewLength=-1)
static UINT RecursiveFind(LPCWSTR lpPath, _SearchData *pSearchData)
const PCUITEMID_CHILD * PCUITEMID_CHILD_ARRAY
WINE_DEFAULT_DEBUG_CHANNEL(shellfind)
STDMETHODIMP GetDetailsOf(PCUITEMID_CHILD pidl, UINT iColumn, SHELLDETAILS *pDetails)
#define IDS_COL_RELEVANCE
bool Allocate(_In_ size_t nElements=1)
STDMETHODIMP GetDisplayNameOf(PCUITEMID_CHILD pidl, DWORD dwFlags, LPSTRRET pName)
#define DISPID_SEARCHSTART
STDMETHODIMP BindToObject(PCUIDLIST_RELATIVE pidl, LPBC pbcReserved, REFIID riid, LPVOID *ppvOut)
static DWORD DWORD void LPSTR DWORD cch
STDMETHODIMP GetClassID(CLSID *pClassId)
LPWSTR WINAPI PathFindFileNameW(LPCWSTR lpszPath)
LPITEMIDLIST WINAPI ILFindLastID(LPCITEMIDLIST pidl)
#define DISPID_SEARCHCOMPLETE
struct _SFV_CREATE SFV_CREATE
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE _In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG FileAttributes
HRESULT WINAPI SHCoCreateInstance(LPCWSTR aclsid, const CLSID *clsid, LPUNKNOWN pUnkOuter, REFIID refiid, LPVOID *ppv)
_Must_inspect_result_ _In_ PHYSICAL_ADDRESS _In_ PHYSICAL_ADDRESS SkipBytes
WCHAR szFileName[MAX_PATH]
CComPtr< IShellFolder2 > m_pisfInner
#define FILE_ATTRIBUTE_DIRECTORY
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
#define IS_TEXT_UNICODE_REVERSE_SIGNATURE
#define IDS_SEARCH_OPEN_FOLDER
#define IS_TEXT_UNKNOWN_FLAGS_MASK
#define IDS_SEARCH_FILES_FOUND
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
STDMETHODIMP GetDefaultColumn(DWORD dwRes, ULONG *pSort, ULONG *pDisplay)
BOOL WINAPI IsTextUnicode(IN CONST VOID *lpv, IN INT iSize, IN OUT LPINT lpiResult OPTIONAL)
static BOOL FileNameMatch(LPCWSTR FindDataFileName, _SearchData *pSearchData)
#define IS_INTRESOURCE(i)
LRESULT UpdateStatus(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
#define SFVM_WINDOWCREATED
#define CreateFileMappingW(a, b, c, d, e, f)
static BOOL StrFindNIW(const WCHAR *lpFirst, const CStringW &lpSrch, UINT cchMax)
#define FAILED_UNEXPECTEDLY(hr)
INT WINAPI StringFromGUID2(REFGUID id, LPOLESTR str, INT cmax)
#define FILE_ATTRIBUTE_READONLY
STDMETHODIMP GetCurFolder(PIDLIST_ABSOLUTE *pidl)
STDMETHODIMP GetAttributesOf(UINT cidl, PCUITEMID_CHILD_ARRAY apidl, DWORD *rgfInOut)
DWORD WINAPI GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh)
unsigned __int3264 UINT_PTR
STDMETHODIMP CreateViewObject(HWND hwndOwner, REFIID riid, LPVOID *ppvOut)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
STDMETHODIMP GetUIObjectOf(HWND hwndOwner, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, REFIID riid, UINT *prgfInOut, LPVOID *ppvOut)
static LPCITEMIDLIST _ILGetFSPidl(LPCITEMIDLIST pidl)
STDMETHODIMP CompareIDs(LPARAM lParam, PCUIDLIST_RELATIVE pidl1, PCUIDLIST_RELATIVE pidl2)
static BOOL StrFindNIA(const CHAR *lpFirst, const CStringA &lpSrch, UINT cchMax)
void NotifyConnections(DISPID id)
static LPITEMIDLIST _ILCreate(LPCWSTR lpszPath)
STDMETHODIMP EnumSearches(IEnumExtraSearch **ppenum)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define memcpy(s1, s2, n)
STDMETHOD() QueryInterface(REFIID iid, void **ppvObject)
#define IS_TEXT_UNICODE_ILLEGAL_CHARS
int WINAPI StrCmpW(LPCWSTR lpszStr, LPCWSTR lpszComp)
static VARIANTARG static DISPID
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
static BOOL SearchFile(LPCWSTR lpFilePath, _SearchData *pSearchData)
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
#define COM_INTERFACE_ENTRY_IID(iid, x)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
CComPtr< IShellBrowser > m_shellBrowser
#define FILE_ATTRIBUTE_HIDDEN
BOOL WINAPI InsertMenuItemW(_In_ HMENU, _In_ UINT, _In_ BOOL, _In_ LPCMENUITEMINFOW)
STDMETHODIMP Initialize(PCIDLIST_ABSOLUTE pidl)
static const TChar * StrStrN(const TChar *lpFirst, const TString &lpSrch, UINT cchMax)
CComPtr< IShellFolderView > m_shellFolderView
STDMETHODIMP ParseDisplayName(HWND hwndOwner, LPBC pbc, LPOLESTR lpszDisplayName, ULONG *pchEaten, PIDLIST_RELATIVE *ppidl, ULONG *pdwAttributes)
void WINAPI SHFree(LPVOID pv)
const ITEMIDLIST_RELATIVE UNALIGNED * PCUIDLIST_RELATIVE
BOOL WINAPI PathMatchSpecW(LPCWSTR lpszPath, LPCWSTR lpszMask)
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
static HRESULT SHELL32_CoCreateInitSF(LPCITEMIDLIST pidlRoot, PERSIST_FOLDER_TARGET_INFO *ppfti, LPCITEMIDLIST pidlChild, const GUID *clsid, REFIID riid, LPVOID *ppvOut)
struct stdole::DISPPARAMS DISPPARAMS
STDMETHODIMP SetNameOf(HWND hwndOwner, PCUITEMID_CHILD pidl, LPCOLESTR lpName, DWORD dwFlags, PITEMID_CHILD *pPidlOut)
#define IS_TEXT_UNICODE_REVERSE_MASK
STDMETHODIMP MapColumnToSCID(UINT iColumn, SHCOLUMNID *pscid)
STDMETHODIMP EnumObjects(HWND hwndOwner, DWORD dwFlags, LPENUMIDLIST *ppEnumIDList)
#define MAKEINTRESOURCEW(i)
LPITEMIDLIST WINAPI ILCreateFromPathW(LPCWSTR path)
#define SID_SShellBrowser
#define WM_SEARCH_UPDATE_STATUS
LPWSTR WINAPI PathCombineW(LPWSTR lpszDest, LPCWSTR lpszDir, LPCWSTR lpszFile)
LRESULT AddResult(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
BOOL WINAPI SHCreateThread(LPTHREAD_START_ROUTINE pfnThreadProc, VOID *pData, DWORD dwFlags, LPTHREAD_START_ROUTINE pfnCallback)
ITEMIDLIST UNALIGNED * LPITEMIDLIST
#define IS_TEXT_UNICODE_NULL_BYTES
static SERVICE_STATUS status
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
LPVOID WINAPI SHAlloc(SIZE_T len)
#define IS_TEXT_UNICODE_UNICODE_MASK
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
#define IS_TEXT_UNICODE_NOT_UNICODE_MASK
HANDLE WINAPI FindFirstFileW(IN LPCWSTR lpFileName, OUT LPWIN32_FIND_DATAW lpFindFileData)
BOOL WINAPI FindClose(HANDLE hFindFile)
static FolderViewColumns g_ColumnDefs[]
PULONG MinorVersion OPTIONAL