mirror of
https://github.com/reactos/reactos.git
synced 2024-09-10 12:54:51 +00:00
![Amine Khaldi](/assets/img/avatar_default.png)
* Create a branch for some evul shell experiments. svn path=/branches/shell-experiments/; revision=61927
123 lines
4.8 KiB
C
123 lines
4.8 KiB
C
#pragma once
|
|
|
|
extern HINSTANCE hInstance;
|
|
|
|
typedef struct _CITEM
|
|
{
|
|
struct _CITEM *next;
|
|
TCHAR szName[256];
|
|
TCHAR szKeyName[256];
|
|
DWORD MajorVersion;
|
|
DWORD MinorVersion;
|
|
DWORD BuildNumber;
|
|
DWORD PlatformId;
|
|
DWORD SPMajorVersion;
|
|
DWORD SPMinorVersion;
|
|
} CITEM, *PCITEM;
|
|
|
|
/******************************************************************************
|
|
ICompatibilityPage
|
|
******************************************************************************/
|
|
|
|
static const GUID CLSID_ICompatibilityPage = {0x513D916F,0x2A8E,0x4F51,{0xAE,0xAB,0x0C,0xBC,0x76,0xFB,0x1A,0xF9}}; /* F8 on XP! */
|
|
|
|
typedef struct ICompatibilityPage *LPCOMPATIBILITYPAGE;
|
|
|
|
/* IShellPropSheetExt */
|
|
typedef struct ifaceIShellPropSheetExtVbtl ifaceIShellPropSheetExtVbtl;
|
|
struct ifaceIShellPropSheetExtVbtl
|
|
{
|
|
HRESULT (STDMETHODCALLTYPE *AddPages)(LPCOMPATIBILITYPAGE this,
|
|
LPFNADDPROPSHEETPAGE lpfnAddPage,
|
|
LPARAM lParam);
|
|
HRESULT (STDMETHODCALLTYPE *ReplacePage)(LPCOMPATIBILITYPAGE this,
|
|
UINT uPageID,
|
|
LPFNADDPROPSHEETPAGE lpfnReplacePage,
|
|
LPARAM lParam);
|
|
};
|
|
|
|
/* IShellExtInit */
|
|
typedef struct ifaceIShellExtInitVbtl ifaceIShellExtInitVbtl;
|
|
struct ifaceIShellExtInitVbtl
|
|
{
|
|
HRESULT (STDMETHODCALLTYPE *Initialize)(LPCOMPATIBILITYPAGE this,
|
|
LPCITEMIDLIST pidlFolder,
|
|
IDataObject *pdtobj,
|
|
HKEY hkeyProgID);
|
|
};
|
|
|
|
/* IClassFactory */
|
|
typedef struct ifaceIClassFactoryVbtl ifaceIClassFactoryVbtl;
|
|
struct ifaceIClassFactoryVbtl
|
|
{
|
|
HRESULT (STDMETHODCALLTYPE *CreateInstance)(LPCOMPATIBILITYPAGE this,
|
|
LPUNKNOWN pUnkOuter,
|
|
REFIID riid,
|
|
PVOID *ppvObject);
|
|
HRESULT (STDMETHODCALLTYPE *LockServer)(LPCOMPATIBILITYPAGE this,
|
|
BOOL fLock);
|
|
};
|
|
|
|
/* ICompatibilityPage */
|
|
typedef struct ifaceICompatibilityPageVbtl ifaceICompatibilityPageVbtl;
|
|
struct ifaceICompatibilityPageVbtl
|
|
{
|
|
/* IUnknown */
|
|
HRESULT (STDMETHODCALLTYPE *QueryInterface)(LPCOMPATIBILITYPAGE this,
|
|
REFIID iid,
|
|
PVOID *pvObject);
|
|
ULONG (STDMETHODCALLTYPE *AddRef)(LPCOMPATIBILITYPAGE this);
|
|
ULONG (STDMETHODCALLTYPE *Release)(LPCOMPATIBILITYPAGE this);
|
|
|
|
union
|
|
{
|
|
ifaceIShellPropSheetExtVbtl IShellPropSheetExt;
|
|
ifaceIShellExtInitVbtl IShellExtInit;
|
|
ifaceIClassFactoryVbtl IClassFactory;
|
|
} fn;
|
|
};
|
|
|
|
typedef struct ICompatibilityPage
|
|
{
|
|
/* IUnknown fields */
|
|
ifaceICompatibilityPageVbtl* lpVtbl;
|
|
LONG ref;
|
|
/* ICompatibilityPage fields */
|
|
TCHAR szFile[MAX_PATH + 1];
|
|
BOOL Changed;
|
|
|
|
PCITEM CItems;
|
|
PCITEM CSelectedItem;
|
|
UINT nItems;
|
|
} COMPATIBILITYPAGE;
|
|
|
|
/* IUnknown */
|
|
HRESULT STDMETHODCALLTYPE ICompatibilityPage_fnQueryInterface(LPCOMPATIBILITYPAGE this,
|
|
REFIID iid,
|
|
PVOID *pvObject);
|
|
ULONG STDMETHODCALLTYPE ICompatibilityPage_fnAddRef(LPCOMPATIBILITYPAGE this);
|
|
ULONG STDMETHODCALLTYPE ICompatibilityPage_fnRelease(LPCOMPATIBILITYPAGE this);
|
|
|
|
/* IShellPropSheetExt */
|
|
HRESULT STDMETHODCALLTYPE ICompatibilityPage_fnAddPages(LPCOMPATIBILITYPAGE this,
|
|
LPFNADDPROPSHEETPAGE lpfnAddPage,
|
|
LPARAM lParam);
|
|
HRESULT STDMETHODCALLTYPE ICompatibilityPage_fnReplacePage(LPCOMPATIBILITYPAGE this,
|
|
UINT uPageID,
|
|
LPFNADDPROPSHEETPAGE lpfnReplacePage,
|
|
LPARAM lParam);
|
|
/* IShellExtInit */
|
|
HRESULT STDMETHODCALLTYPE ICompatibilityPage_fnInitialize(LPCOMPATIBILITYPAGE this,
|
|
LPCITEMIDLIST pidlFolder,
|
|
IDataObject *pdtobj,
|
|
HKEY hkeyProgID);
|
|
/* IClassFactory */
|
|
HRESULT STDMETHODCALLTYPE ICompatibilityPage_fnCreateInstance(LPCOMPATIBILITYPAGE this,
|
|
LPUNKNOWN pUnkOuter,
|
|
REFIID riid,
|
|
PVOID *ppvObject);
|
|
HRESULT STDMETHODCALLTYPE ICompatibilityPage_fnLockServer(LPCOMPATIBILITYPAGE this,
|
|
BOOL fLock);
|
|
|
|
/* EOF */
|