[BROWSEUI][PSDK] Stubplement UserAssist

Initial implementation of `CUserAssist` class, which contains `IUserAssist` interface.
See https://www.geoffchappell.com/studies/windows/ie/browseui/classes/userassist.htm.
Required by MS shell32.dll.

CORE-17345 CORE-17393
This commit is contained in:
Oleg Dubinskiy 2020-10-21 17:46:09 +03:00 committed by Stanislav Motylkov
parent bb209e9010
commit 1f5e0f3fa7
No known key found for this signature in database
GPG Key ID: AFE513258CBA9E92
10 changed files with 138 additions and 1 deletions

View File

@ -31,7 +31,9 @@ list(APPEND SOURCE
toolsband.cpp
travellog.cpp
utility.cpp
CProgressDialog.cpp)
CProgressDialog.cpp
CUserAssist.cpp
CUserAssist.h)
list(APPEND PCH_SKIP_SOURCE
dllinstall.c)

View File

@ -0,0 +1,42 @@
/*
* PROJECT: ReactOS browseui
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
* PURPOSE: IUserAssist implementation
* COPYRIGHT: Copyright 2020 Oleg Dubinskiy (oleg.dubinskij2013@yandex.ua)
*/
// See http://www.geoffchappell.com/studies/windows/ie/browseui/interfaces/iuserassist.htm
#include "precomp.h"
CUserAssist::CUserAssist()
{
}
CUserAssist::~CUserAssist()
{
}
// *** IUserAssist methods ***
STDMETHODIMP CUserAssist::FireEvent(GUID const *guid, INT param1, ULONG param2, WPARAM wparam, LPARAM lparam)
{
TRACE("(%u, %d, %d, %p, %p)\n", this, guid, param1, param2, wparam, lparam);
return E_NOTIMPL;
}
STDMETHODIMP CUserAssist::QueryEvent(GUID const *guid, INT param, WPARAM wparam, LPARAM lparam, PVOID ptr)
{
TRACE("(%u, %d, %p, %p, %p)\n", this, guid, param, wparam, lparam, ptr);
return E_NOTIMPL;
}
STDMETHODIMP CUserAssist::SetEvent(GUID const *guid, INT param, WPARAM wparam, LPARAM lparam, PVOID ptr)
{
TRACE("(%u, %d, %p, %p, %p)\n", this, guid, param, wparam, lparam, ptr);
return E_NOTIMPL;
}
STDMETHODIMP CUserAssist::Enable(BOOL bEnable)
{
TRACE("(%d)\n", this, bEnable);
return E_NOTIMPL;
}

View File

@ -0,0 +1,38 @@
/*
* PROJECT: ReactOS browseui
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
* PURPOSE: IUserAssist implementation
* COPYRIGHT: Copyright 2020 Oleg Dubinskiy (oleg.dubinskij2013@yandex.ua)
*/
// See https://www.geoffchappell.com/studies/windows/ie/browseui/classes/userassist.htm
#pragma once
class CUserAssist :
public CComCoClass<CUserAssist, &CLSID_UserAssist>,
public CComObjectRootEx<CComMultiThreadModelNoCS>,
public IUserAssist
{
private:
public:
CUserAssist();
~CUserAssist();
// *** IUserAssist methods ***
STDMETHODIMP FireEvent(GUID const *guid, INT param1, ULONG param2, WPARAM wparam, LPARAM lparam);
// FIXME: PVOID should point to undocumented UEMINFO structure.
STDMETHODIMP QueryEvent(GUID const *guid, INT param, WPARAM wparam, LPARAM lparam, PVOID ptr);
STDMETHODIMP SetEvent(GUID const *guid, INT param, WPARAM wparam, LPARAM lparam, PVOID ptr);
STDMETHODIMP Enable(BOOL bEnable);
public:
DECLARE_REGISTRY_RESOURCEID(IDR_USERASSIST)
DECLARE_NOT_AGGREGATABLE(CUserAssist)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CUserAssist)
COM_INTERFACE_ENTRY_IID(IID_IUserAssist, IUserAssist)
END_COM_MAP()
};

View File

@ -156,6 +156,7 @@ OBJECT_ENTRY(CLSID_FileSearchBand, CSearchBar)
OBJECT_ENTRY(CLSID_ProgressDialog, CProgressDialog)
OBJECT_ENTRY(CLSID_ISFBand, CISFBand)
OBJECT_ENTRY(CLSID_FindFolder, CFindFolder)
OBJECT_ENTRY(CLSID_UserAssist, CUserAssist)
END_OBJECT_MAP()
CBrowseUIModule gModule;

View File

@ -50,6 +50,7 @@ IDR_ACLCUSTOMMRU REGISTRY "res/custommru.rgs"
IDR_TASKBARLIST REGISTRY "res/taskbarlist.rgs"
IDR_FILESEARCHBAND REGISTRY "res/filesearchband.rgs"
IDR_FINDFOLDER REGISTRY "res/findfolder.rgs"
IDR_USERASSIST REGISTRY "res/userassist.rgs"
#include <reactos/manifest_dll.rc>

View File

@ -57,6 +57,7 @@
#include "CTaskbarList.h"
#include "explorerband.h"
#include "CProgressDialog.h"
#include "CUserAssist.h"
#include "browseui.h"
#include <stdio.h>

View File

@ -0,0 +1,13 @@
HKCR
{
NoRemove CLSID
{
ForceRemove {DD313E04-FEFF-11D1-8ECD-0000F87A470C} = s 'User assistance'
{
InprocServer32 = s '%MODULE%'
{
val ThreadingModel = s 'Both'
}
}
}
}

View File

@ -107,6 +107,7 @@
#define IDR_TASKBARLIST 145
#define IDR_FILESEARCHBAND 146
#define IDR_FINDFOLDER 147
#define IDR_USERASSIST 148
#define IDS_SMALLICONS 12301
#define IDS_LARGEICONS 12302

View File

@ -104,6 +104,8 @@ DEFINE_GUID(CLSID_ACListISF, 0x03c036f1, 0xa186, 0x11d0, 0x82, 0x4a, 0x00,
DEFINE_GUID(CLSID_ACLMRU, 0x6756a641, 0xde71, 0x11d0, 0x83, 0x1b, 0x00, 0xaa, 0x00, 0x5b, 0x43, 0x83);
DEFINE_GUID(CLSID_ACLCustomMRU, 0x6935db93, 0x21e8, 0x4ccc, 0xbe, 0xb9, 0x9f, 0xe3, 0xc7, 0x7a, 0x29, 0x7a);
DEFINE_GUID(CLSID_UserAssist, 0xdd313e04, 0xfeff, 0x11d1, 0x8e, 0xcd, 0x00, 0x00, 0xf8, 0x7a, 0x47, 0x0c);
#define SID_SInternetExplorer IID_IWebBrowserApp
#define SID_SWebBrowserApp IID_IWebBrowserApp
#define SID_SWebBrowserEventsService IID_IWebBrowserEventsService

View File

@ -4768,4 +4768,40 @@ interface IItemNameLimits : IUnknown
[out] int *piMaxNameLen);
};
/*****************************************************************************
* IUserAssist interface
*/
[
uuid(dd313e05-feff-11d1-8ecd-0000f87a470c),
object,
local,
pointer_default(unique)
]
interface IUserAssist : IUnknown
{
HRESULT FireEvent(
GUID const *guid,
INT param1,
ULONG param2,
WPARAM wparam,
LPARAM lparam);
HRESULT QueryEvent(
GUID const *guid,
INT param,
WPARAM wparam,
LPARAM lparam,
PVOID ptr);
HRESULT SetEvent(
GUID const *guid,
INT param,
WPARAM wparam,
LPARAM lparam,
PVOID ptr);
HRESULT Enable(
BOOL bEnable);
};
#endif // __REACTOS__