mirror of
https://github.com/Open-Shell/Open-Shell-Menu.git
synced 2026-04-13 20:28:31 +10:00
Modern settings shell folder
Adds virtual shell folder that contains items representing modern settings parsed from
`%windir%\ImmersiveControlPanel\Settings\AllSystemSettings_{253E530E-387D-4BC2-959D-E6F86122E5F2}.xml`.
It can be accessed via `shell:::{82E749ED-B971-4550-BAF7-06AA2BF7E836}` (in explorer).
Item in folder will open given setting page in `Settings` application.
This commit is contained in:
60
Src/StartMenu/StartMenuHelper/ModernSettingsContextMenu.h
Normal file
60
Src/StartMenu/StartMenuHelper/ModernSettingsContextMenu.h
Normal file
@@ -0,0 +1,60 @@
|
||||
// Context menu handler for Open-Shell Modern Settings shell folder
|
||||
|
||||
#pragma once
|
||||
#include "resource.h"
|
||||
#include "StartMenuHelper_i.h"
|
||||
#include <shlobj.h>
|
||||
|
||||
// CModernSettingsContextMenu
|
||||
|
||||
class ATL_NO_VTABLE CModernSettingsContextMenu :
|
||||
public CComObjectRootEx<CComSingleThreadModel>,
|
||||
public CComCoClass<CModernSettingsContextMenu, &CLSID_ModernSettingsContextMenu>,
|
||||
public IContextMenu,
|
||||
public IShellExtInit,
|
||||
public IObjectWithSite
|
||||
{
|
||||
public:
|
||||
CModernSettingsContextMenu()
|
||||
{
|
||||
}
|
||||
|
||||
DECLARE_REGISTRY_RESOURCEID(IDR_MODERNSETTINGSCONTEXTMENU)
|
||||
|
||||
DECLARE_NOT_AGGREGATABLE(CModernSettingsContextMenu)
|
||||
|
||||
BEGIN_COM_MAP(CModernSettingsContextMenu)
|
||||
COM_INTERFACE_ENTRY(IContextMenu)
|
||||
COM_INTERFACE_ENTRY(IShellExtInit)
|
||||
COM_INTERFACE_ENTRY(IObjectWithSite)
|
||||
END_COM_MAP()
|
||||
|
||||
DECLARE_PROTECT_FINAL_CONSTRUCT()
|
||||
|
||||
HRESULT FinalConstruct()
|
||||
{
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
void FinalRelease()
|
||||
{
|
||||
}
|
||||
|
||||
// IContextMenu
|
||||
IFACEMETHODIMP QueryContextMenu(HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags);
|
||||
IFACEMETHODIMP InvokeCommand(LPCMINVOKECOMMANDINFO lpici);
|
||||
IFACEMETHODIMP GetCommandString(UINT_PTR idCmd, UINT uType, UINT* pRes, LPSTR pszName, UINT cchMax);
|
||||
|
||||
// IShellExtInit
|
||||
IFACEMETHODIMP Initialize(PCIDLIST_ABSOLUTE pidlFolder, IDataObject* pdtobj, HKEY hkeyProgID);
|
||||
|
||||
// IObjectWithSite
|
||||
IFACEMETHODIMP SetSite(IUnknown* punkSite);
|
||||
IFACEMETHODIMP GetSite(REFIID riid, void** ppvSite);
|
||||
|
||||
private:
|
||||
CComPtr<IDataObject> m_pdtobj;
|
||||
CComPtr<IUnknown> m_punkSite;
|
||||
};
|
||||
|
||||
OBJECT_ENTRY_AUTO(__uuidof(ModernSettingsContextMenu), CModernSettingsContextMenu)
|
||||
Reference in New Issue
Block a user