From 2c9c634a8e4910b7303937dac2f281bf2cb0b0f3 Mon Sep 17 00:00:00 2001 From: Katayama Hirofumi MZ Date: Sat, 12 Aug 2023 18:17:13 +0900 Subject: [PATCH] [SHELL32] Implement SHFindComputer (#5524) CORE-9277 --- dll/win32/shell32/stubs.cpp | 11 ----------- dll/win32/shell32/utils.cpp | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 11 deletions(-) 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); +}