https://git.reactos.org/?p=reactos.git;a=commitdiff;h=2c9c634a8e4910b730393…
commit 2c9c634a8e4910b7303937dac2f281bf2cb0b0f3
Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com>
AuthorDate: Sat Aug 12 18:17:13 2023 +0900
Commit: GitHub <noreply(a)github.com>
CommitDate: Sat Aug 12 18:17:13 2023 +0900
[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);
+}