mirror of
https://github.com/reactos/reactos.git
synced 2025-08-07 08:33:11 +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;
|
return E_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Unimplemented
|
|
||||||
*/
|
|
||||||
EXTERN_C BOOL
|
|
||||||
WINAPI
|
|
||||||
SHShouldShowWizards(LPVOID lpUnknown)
|
|
||||||
{
|
|
||||||
FIXME("SHShouldShowWizards() stub\n");
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Unimplemented
|
* Unimplemented
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -122,6 +122,36 @@ HRESULT SHILAppend(_Inout_ LPITEMIDLIST pidl, _Inout_ LPITEMIDLIST *ppidl)
|
||||||
return hr;
|
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
|
static BOOL
|
||||||
OpenEffectiveToken(
|
OpenEffectiveToken(
|
||||||
_In_ DWORD DesiredAccess,
|
_In_ DWORD DesiredAccess,
|
||||||
|
|
|
@ -33,6 +33,7 @@ list(APPEND SOURCE
|
||||||
SHCreateFileExtractIconW.cpp
|
SHCreateFileExtractIconW.cpp
|
||||||
SHParseDisplayName.cpp
|
SHParseDisplayName.cpp
|
||||||
SHRestricted.cpp
|
SHRestricted.cpp
|
||||||
|
SHShouldShowWizards.cpp
|
||||||
She.cpp
|
She.cpp
|
||||||
ShellExecCmdLine.cpp
|
ShellExecCmdLine.cpp
|
||||||
ShellExecuteEx.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_SHGetUserDisplayName(void);
|
||||||
extern void func_SHLimitInputEdit(void);
|
extern void func_SHLimitInputEdit(void);
|
||||||
extern void func_SHParseDisplayName(void);
|
extern void func_SHParseDisplayName(void);
|
||||||
|
extern void func_SHShouldShowWizards(void);
|
||||||
extern void func_SHSimpleIDListFromPath(void);
|
extern void func_SHSimpleIDListFromPath(void);
|
||||||
extern void func_SHRestricted(void);
|
extern void func_SHRestricted(void);
|
||||||
|
|
||||||
|
@ -92,6 +93,7 @@ const struct test winetest_testlist[] =
|
||||||
{ "SHGetUserDisplayName", func_SHGetUserDisplayName },
|
{ "SHGetUserDisplayName", func_SHGetUserDisplayName },
|
||||||
{ "SHLimitInputEdit", func_SHLimitInputEdit },
|
{ "SHLimitInputEdit", func_SHLimitInputEdit },
|
||||||
{ "SHParseDisplayName", func_SHParseDisplayName },
|
{ "SHParseDisplayName", func_SHParseDisplayName },
|
||||||
|
{ "SHShouldShowWizards", func_SHShouldShowWizards },
|
||||||
{ "SHSimpleIDListFromPath", func_SHSimpleIDListFromPath },
|
{ "SHSimpleIDListFromPath", func_SHSimpleIDListFromPath },
|
||||||
{ "SHRestricted", func_SHRestricted },
|
{ "SHRestricted", func_SHRestricted },
|
||||||
|
|
||||||
|
|
|
@ -204,6 +204,8 @@ int WINAPI SHOutOfMemoryMessageBox(
|
||||||
LPCSTR lpCaption,
|
LPCSTR lpCaption,
|
||||||
UINT uType);
|
UINT uType);
|
||||||
|
|
||||||
|
HRESULT WINAPI SHShouldShowWizards(_In_ IUnknown *pUnknown);
|
||||||
|
|
||||||
DWORD WINAPI SHNetConnectionDialog(
|
DWORD WINAPI SHNetConnectionDialog(
|
||||||
HWND hwndOwner,
|
HWND hwndOwner,
|
||||||
LPCWSTR lpstrRemoteName,
|
LPCWSTR lpstrRemoteName,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue