[PSDK][ACTXPROXY] Add IExplorerCommand and related classes (Vista+)

This commit is contained in:
Mark Jansen 2017-12-28 23:19:52 +01:00
parent 371aba1abe
commit 1d4d88b062
2 changed files with 180 additions and 0 deletions

View file

@ -200,6 +200,36 @@ HRESULT __RPC_STUB IEnumShellItems_Next_Stub(
return hr;
}
#ifdef __REACTOS__
HRESULT CALLBACK IEnumExplorerCommand_Next_Proxy(
IEnumExplorerCommand *This,
ULONG celt,
IExplorerCommand **pUICommand,
ULONG *pceltFetched)
{
ULONG fetched;
TRACE("(%p)->(%d, %p, %p)\n", This, celt, pUICommand, pceltFetched);
if (!pceltFetched) pceltFetched = &fetched;
return IEnumExplorerCommand_RemoteNext_Proxy(This, celt, pUICommand, pceltFetched);
}
HRESULT __RPC_STUB IEnumExplorerCommand_Next_Stub(
IEnumExplorerCommand *This,
ULONG celt,
IExplorerCommand **pUICommand,
ULONG *pceltFetched)
{
HRESULT hr;
TRACE("(%p)->(%d, %p, %p)\n", This, celt, pUICommand, pceltFetched);
*pceltFetched = 0;
hr = IEnumExplorerCommand_Next(This, celt, pUICommand, pceltFetched);
if (hr == S_OK) *pceltFetched = celt;
return hr;
}
#endif // __REACTOS__
HRESULT CALLBACK IModalWindow_Show_Proxy(
IModalWindow *This,
HWND hwndOwner)

View file

@ -2196,6 +2196,156 @@ interface IDefaultExtractIconInit : IUnknown
[in] int iIcon);
}
#ifdef __REACTOS__
/*****************************************************************************
* IExplorerCommand interface (Vista+)
*/
interface IEnumExplorerCommand;
[
uuid(A08CE4D0-FA25-44AB-B57C-C7B1C323E0B9),
pointer_default(unique)
]
interface IExplorerCommand : IUnknown
{
cpp_quote("// GetIcon(ppszIcon) Receives resource string that identifies icon source")
typedef [v1_enum] enum _EXPCMDSTATE
{
ECS_ENABLED = 0x000,
ECS_DISABLED = 0x001,
ECS_HIDDEN = 0x002,
ECS_CHECKBOX = 0x004,
ECS_CHECKED = 0x008,
ECS_RADIOCHECK = 0x010, // Windows 7
} EXPCMDSTATE;
typedef [v1_enum] enum _EXPCMDFLAGS
{
ECF_DEFAULT = 0x000,
ECF_HASSUBCOMMANDS = 0x001,
ECF_HASSPLITBUTTON = 0x002,
ECF_HIDELABEL = 0x004,
ECF_ISSEPARATOR = 0x008,
ECF_HASLUASHIELD = 0x010,
ECF_SEPARATORBEFORE = 0x020, // Windows 7
ECF_SEPARATORAFTER = 0x040, // Windows 7
ECF_ISDROPDOWN = 0x080, // Windows 7
ECF_TOGGLEABLE = 0x100, // Windows 8
ECF_AUTOMENUICONS = 0x200, // Windows 8
} EXPCMDFLAGS;
HRESULT GetTitle(
[in, unique] IShellItemArray *psiItemArray,
[out, string] LPWSTR *ppszName);
HRESULT GetIcon(
[in, unique] IShellItemArray *psiItemArray,
[out, string] LPWSTR *ppszIcon);
HRESULT GetToolTip(
[in, unique] IShellItemArray *psiItemArray,
[out, string] LPWSTR *ppszInfotip);
HRESULT GetCanonicalName(
[out] GUID* pguidCommandName);
HRESULT GetState(
[in] IShellItemArray *psiItemArray,
[in] BOOL fOkToBeSlow,
[out] EXPCMDSTATE *pCmdState);
HRESULT Invoke(
[in] IShellItemArray *psiItemArray,
[in, unique] IBindCtx *pbc);
HRESULT GetFlags(
[out] EXPCMDFLAGS *pFlags);
HRESULT EnumSubCommands(
[out] IEnumExplorerCommand **ppEnum);
};
/*****************************************************************************
* IExplorerCommandState interface (Vista+)
*/
[
object,
uuid(BDDACB60-7657-47AE-8445-D23E1ACF82AE),
pointer_default(unique)
]
interface IExplorerCommandState : IUnknown
{
HRESULT GetState(
[in] IShellItemArray *psiItemArray,
[in] BOOL fOkToBeSlow,
[out] EXPCMDSTATE *pCmdState);
}
/*****************************************************************************
* IInitializeCommand interface (Vista+)
*/
[
object,
uuid(85075ACF-231F-40EA-9610-D26B7B58F638),
pointer_default(unique)
]
interface IInitializeCommand : IUnknown
{
HRESULT Initialize(
[in, string] LPCWSTR pszCommandName,
[in] IPropertyBag *ppb);
}
/*****************************************************************************
* IEnumExplorerCommand interface (Vista+)
*/
[
object,
uuid(A88826F8-186F-4987-AADE-EA0CEF8FBFE8),
pointer_default(unique)
]
interface IEnumExplorerCommand : IUnknown
{
[local]
HRESULT Next(
[in] ULONG celt,
[out] IExplorerCommand** pUICommand,
[out, optional] ULONG *pceltFetched);
[call_as(Next)]
HRESULT RemoteNext(
[in] ULONG celt,
[out] IExplorerCommand** pUICommand,
[out, optional] ULONG *pceltFetched);
HRESULT Skip(
[in] ULONG celt);
HRESULT Reset();
HRESULT Clone(
[out] IEnumExplorerCommand **ppenum);
};
/*****************************************************************************
* IExplorerCommandProvider interface (Vista+)
*/
[
uuid(64961751-0835-43C0-8FFE-D57686530E64),
pointer_default(unique)
]
interface IExplorerCommandProvider : IUnknown
{
cpp_quote("// GetCommands usually creates an IEnumExplorerCommand")
cpp_quote("// GetCommand usually creates an IExplorerCommand")
HRESULT GetCommands(
[in] IUnknown *punkSite,
[in] REFIID riid,
[out, iid_is(riid)] void **ppv);
HRESULT GetCommand(
[in] REFGUID rguidCommandId,
[in] REFIID riid,
[out, iid_is(riid)] void **ppv);
};
#endif // __REACTOS__
/*****************************************************************************
* IDeskBand interface
*/