mirror of
https://github.com/reactos/reactos.git
synced 2025-08-07 06:43:06 +00:00
[SHELL32][SHELL32_APITEST][SDK] Implement SHShouldShowWizards (#7614)
Implementing missing features... JIRA issue: CORE-19278 - Move function definition from stubs.cpp into utils.cpp. - Add prototype to <undocshell.h>.
This commit is contained in:
parent
b1257cefe1
commit
b68104a8a0
6 changed files with 158 additions and 11 deletions
|
@ -896,17 +896,6 @@ SHSetUserPicturePathW(LPCWSTR lpPath, int csidl, LPVOID lpUnknown)
|
|||
return E_FAIL;
|
||||
}
|
||||
|
||||
/*
|
||||
* Unimplemented
|
||||
*/
|
||||
EXTERN_C BOOL
|
||||
WINAPI
|
||||
SHShouldShowWizards(LPVOID lpUnknown)
|
||||
{
|
||||
FIXME("SHShouldShowWizards() stub\n");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Unimplemented
|
||||
*/
|
||||
|
|
|
@ -122,6 +122,36 @@ HRESULT SHILAppend(_Inout_ LPITEMIDLIST pidl, _Inout_ LPITEMIDLIST *ppidl)
|
|||
return hr;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* SHShouldShowWizards [SHELL32.237]
|
||||
*
|
||||
* Used by printer and network features.
|
||||
* @see https://undoc.airesoft.co.uk/shell32.dll/SHShouldShowWizards.php
|
||||
*/
|
||||
EXTERN_C
|
||||
HRESULT WINAPI
|
||||
SHShouldShowWizards(_In_ IUnknown *pUnknown)
|
||||
{
|
||||
HRESULT hr;
|
||||
IShellBrowser *pBrowser;
|
||||
|
||||
hr = IUnknown_QueryService(pUnknown, SID_STopWindow, IID_PPV_ARG(IShellBrowser, &pBrowser));
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
|
||||
SHELLSTATE state;
|
||||
SHGetSetSettings(&state, SSF_WEBVIEW, FALSE);
|
||||
if (state.fWebView &&
|
||||
!SHRegGetBoolUSValueW(L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
|
||||
L"ShowWizardsTEST", FALSE, FALSE))
|
||||
{
|
||||
hr = S_FALSE;
|
||||
}
|
||||
|
||||
pBrowser->Release();
|
||||
return hr;
|
||||
}
|
||||
|
||||
static BOOL
|
||||
OpenEffectiveToken(
|
||||
_In_ DWORD DesiredAccess,
|
||||
|
|
|
@ -33,6 +33,7 @@ list(APPEND SOURCE
|
|||
SHCreateFileExtractIconW.cpp
|
||||
SHParseDisplayName.cpp
|
||||
SHRestricted.cpp
|
||||
SHShouldShowWizards.cpp
|
||||
She.cpp
|
||||
ShellExecCmdLine.cpp
|
||||
ShellExecuteEx.cpp
|
||||
|
|
123
modules/rostests/apitests/shell32/SHShouldShowWizards.cpp
Normal file
123
modules/rostests/apitests/shell32/SHShouldShowWizards.cpp
Normal file
|
@ -0,0 +1,123 @@
|
|||
/*
|
||||
* PROJECT: ReactOS API tests
|
||||
* LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
|
||||
* PURPOSE: Test for SHShouldShowWizards
|
||||
* COPYRIGHT: Copyright 2025 Katayama Hirofumi MZ (katayama.hirofumi.mz@gmail.com)
|
||||
*/
|
||||
|
||||
#include "shelltest.h"
|
||||
#include <undocshell.h>
|
||||
#include <versionhelpers.h>
|
||||
|
||||
class CDummyClass
|
||||
: public IServiceProvider
|
||||
, public IShellBrowser
|
||||
{
|
||||
public:
|
||||
CDummyClass() { }
|
||||
|
||||
IUnknown *GetUnknown()
|
||||
{
|
||||
return static_cast<IServiceProvider *>(this);
|
||||
}
|
||||
|
||||
// *** IUnknown methods ***
|
||||
STDMETHODIMP QueryInterface(REFIID riid, VOID **ppvObj) override
|
||||
{
|
||||
if (riid == IID_IUnknown || riid == IID_IServiceProvider)
|
||||
{
|
||||
AddRef();
|
||||
*ppvObj = static_cast<IServiceProvider *>(this);
|
||||
return S_OK;
|
||||
}
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
STDMETHODIMP_(ULONG) AddRef() override
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
STDMETHODIMP_(ULONG) Release() override
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
// *** IOleWindow methods ***
|
||||
STDMETHODIMP GetWindow(HWND *phwnd) override { return E_NOTIMPL; }
|
||||
STDMETHODIMP ContextSensitiveHelp(BOOL fEnterMode) override { return E_NOTIMPL; }
|
||||
|
||||
// *** IShellBrowser methods ***
|
||||
STDMETHODIMP InsertMenusSB(HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths) override { return E_NOTIMPL; }
|
||||
STDMETHODIMP SetMenuSB(HMENU hmenuShared, HOLEMENU holemenuRes, HWND hwndActiveObject) override { return E_NOTIMPL; }
|
||||
STDMETHODIMP RemoveMenusSB(HMENU hmenuShared) override { return E_NOTIMPL; }
|
||||
STDMETHODIMP SetStatusTextSB(LPCOLESTR pszStatusText) override { return E_NOTIMPL; }
|
||||
STDMETHODIMP EnableModelessSB(BOOL fEnable) override { return E_NOTIMPL; }
|
||||
STDMETHODIMP TranslateAcceleratorSB(MSG *pmsg, WORD wID) override { return E_NOTIMPL; }
|
||||
STDMETHODIMP BrowseObject(LPCITEMIDLIST pidl, UINT wFlags) override { return E_NOTIMPL; }
|
||||
STDMETHODIMP GetViewStateStream(DWORD grfMode, IStream **ppStrm) override { return E_NOTIMPL; }
|
||||
STDMETHODIMP GetControlWindow(UINT id, HWND *lphwnd) override { return E_NOTIMPL; }
|
||||
STDMETHODIMP SendControlMsg(UINT id, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *pret) override { return E_NOTIMPL; }
|
||||
STDMETHODIMP QueryActiveShellView(struct IShellView **ppshv) override { return E_NOTIMPL; }
|
||||
STDMETHODIMP OnViewWindowActive(struct IShellView *ppshv) override { return E_NOTIMPL; }
|
||||
STDMETHODIMP SetToolbarItems(LPTBBUTTON lpButtons, UINT nButtons, UINT uFlags) override { return E_NOTIMPL; }
|
||||
|
||||
// *** IServiceProvider methods ***
|
||||
STDMETHODIMP QueryService(REFGUID guidService, REFIID riid, void **ppvObject) override
|
||||
{
|
||||
if (riid == IID_IShellBrowser)
|
||||
{
|
||||
AddRef();
|
||||
*ppvObject = static_cast<IShellBrowser *>(this);
|
||||
return S_OK;
|
||||
}
|
||||
return E_FAIL;
|
||||
}
|
||||
};
|
||||
|
||||
static VOID SetShowWizardsTEST(BOOL bValue)
|
||||
{
|
||||
DWORD dwValue = bValue;
|
||||
SHRegSetUSValueW(L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
|
||||
L"ShowWizardsTEST", REG_DWORD, &dwValue, sizeof(dwValue), SHREGSET_FORCE_HKCU);
|
||||
}
|
||||
|
||||
START_TEST(SHShouldShowWizards)
|
||||
{
|
||||
// Save old values
|
||||
SHELLSTATE state;
|
||||
SHGetSetSettings(&state, SSF_WEBVIEW, FALSE);
|
||||
BOOL bOldWebView = state.fWebView;
|
||||
BOOL bOldTestValue = SHRegGetBoolUSValueW(
|
||||
L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
|
||||
L"ShowWizardsTEST",
|
||||
FALSE,
|
||||
FALSE);
|
||||
|
||||
CDummyClass dummy;
|
||||
HRESULT hr;
|
||||
const BOOL bVistaPlus = IsWindowsVistaOrGreater();
|
||||
|
||||
state.fWebView = FALSE;
|
||||
SHGetSetSettings(&state, SSF_WEBVIEW, TRUE);
|
||||
SetShowWizardsTEST(FALSE);
|
||||
hr = SHShouldShowWizards(dummy.GetUnknown());
|
||||
ok_hex(hr, bVistaPlus ? S_FALSE : S_OK);
|
||||
|
||||
SetShowWizardsTEST(TRUE);
|
||||
hr = SHShouldShowWizards(dummy.GetUnknown());
|
||||
ok_hex(hr, bVistaPlus ? S_FALSE : S_OK);
|
||||
|
||||
state.fWebView = TRUE;
|
||||
SHGetSetSettings(&state, SSF_WEBVIEW, TRUE);
|
||||
SetShowWizardsTEST(FALSE);
|
||||
hr = SHShouldShowWizards(dummy.GetUnknown());
|
||||
ok_hex(hr, S_FALSE);
|
||||
|
||||
SetShowWizardsTEST(TRUE);
|
||||
hr = SHShouldShowWizards(dummy.GetUnknown());
|
||||
ok_hex(hr, bVistaPlus ? S_FALSE : S_OK);
|
||||
|
||||
// Restore old values
|
||||
state.fWebView = bOldWebView;
|
||||
SHGetSetSettings(&state, SSF_WEBVIEW, TRUE);
|
||||
SetShowWizardsTEST(bOldTestValue);
|
||||
}
|
|
@ -45,6 +45,7 @@ extern void func_SHGetFileInfo(void);
|
|||
extern void func_SHGetUserDisplayName(void);
|
||||
extern void func_SHLimitInputEdit(void);
|
||||
extern void func_SHParseDisplayName(void);
|
||||
extern void func_SHShouldShowWizards(void);
|
||||
extern void func_SHSimpleIDListFromPath(void);
|
||||
extern void func_SHRestricted(void);
|
||||
|
||||
|
@ -92,6 +93,7 @@ const struct test winetest_testlist[] =
|
|||
{ "SHGetUserDisplayName", func_SHGetUserDisplayName },
|
||||
{ "SHLimitInputEdit", func_SHLimitInputEdit },
|
||||
{ "SHParseDisplayName", func_SHParseDisplayName },
|
||||
{ "SHShouldShowWizards", func_SHShouldShowWizards },
|
||||
{ "SHSimpleIDListFromPath", func_SHSimpleIDListFromPath },
|
||||
{ "SHRestricted", func_SHRestricted },
|
||||
|
||||
|
|
|
@ -204,6 +204,8 @@ int WINAPI SHOutOfMemoryMessageBox(
|
|||
LPCSTR lpCaption,
|
||||
UINT uType);
|
||||
|
||||
HRESULT WINAPI SHShouldShowWizards(_In_ IUnknown *pUnknown);
|
||||
|
||||
DWORD WINAPI SHNetConnectionDialog(
|
||||
HWND hwndOwner,
|
||||
LPCWSTR lpstrRemoteName,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue