diff --git a/dll/win32/shell32/stubs.cpp b/dll/win32/shell32/stubs.cpp index c25d4cb1fc1..4c019e9b031 100644 --- a/dll/win32/shell32/stubs.cpp +++ b/dll/win32/shell32/stubs.cpp @@ -25,17 +25,6 @@ ShortSizeFormatW(LONGLONG llNumber) return NULL; } -/* - * Unimplemented - */ -EXTERN_C BOOL -WINAPI -SHFindComputer(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2) -{ - FIXME("SHFindComputer() stub\n"); - return FALSE; -} - /* * Unimplemented */ diff --git a/dll/win32/shell32/utils.cpp b/dll/win32/shell32/utils.cpp index e59af7f7350..c21e679a07b 100644 --- a/dll/win32/shell32/utils.cpp +++ b/dll/win32/shell32/utils.cpp @@ -66,3 +66,36 @@ SheRemoveQuotesW(LPWSTR psz) return psz; } + +/************************************************************************* + * SHFindComputer [SHELL32.91] + * + * Invokes the shell search in My Computer. Used in SHFindFiles. + * Two parameters are ignored. + */ +EXTERN_C BOOL +WINAPI +SHFindComputer(LPCITEMIDLIST pidlRoot, LPCITEMIDLIST pidlSavedSearch) +{ + UNREFERENCED_PARAMETER(pidlRoot); + UNREFERENCED_PARAMETER(pidlSavedSearch); + + TRACE("%p %p\n", pidlRoot, pidlSavedSearch); + + IContextMenu *pCM; + HRESULT hr = CoCreateInstance(CLSID_ShellSearchExt, NULL, CLSCTX_INPROC_SERVER, + IID_IContextMenu, (void **)&pCM); + if (FAILED(hr)) + { + ERR("0x%08X\n", hr); + return hr; + } + + CMINVOKECOMMANDINFO InvokeInfo = { sizeof(InvokeInfo) }; + InvokeInfo.lpParameters = "{996E1EB1-B524-11D1-9120-00A0C98BA67D}"; + InvokeInfo.nShow = SW_SHOWNORMAL; + hr = pCM->InvokeCommand(&InvokeInfo); + pCM->Release(); + + return SUCCEEDED(hr); +}