25 CMD_FLAG_SUPPORTED_BASIC = 0x1,
26 CMD_FLAG_SUPPORTED_ADVANCED = 0x2,
27 CMD_FLAG_NOT_SUPPORTED = 0x4,
33 return OLECMDERR_E_NOTSUPPORTED;
37 for (iCmd = 0; iCmd < cCmds; ++iCmd)
39 cmdID = (OLECMDID)prgCmds[iCmd].cmdID;
40 if (cmdID <= OLECMDID_PROPERTIES)
42 cmdFlags |= CMD_FLAG_NOT_SUPPORTED;
46 if (cmdID <= OLECMDID_PASTE || cmdID == OLECMDID_SELECTALL)
48 cmdFlags |= CMD_FLAG_SUPPORTED_BASIC;
52 if (cmdID <= OLECMDID_UPDATECOMMANDS ||
53 (OLECMDID_HIDETOOLBARS <= cmdID && cmdID != OLECMDID_ENABLE_INTERACTION))
55 cmdFlags |= CMD_FLAG_NOT_SUPPORTED;
59 cmdFlags |= CMD_FLAG_SUPPORTED_ADVANCED;
67 return OLECMDERR_E_UNKNOWNGROUP;
69 return OLECMDERR_E_NOTSUPPORTED;
72 for (iCmd = 0; iCmd < cCmds; ++iCmd)
74 cmdID = (OLECMDID)prgCmds[iCmd].cmdID;
75 if (cmdID == OLECMDID_SELECTALL ||
76 (OLECMDID_SHOWFIND <= cmdID && cmdID <= OLECMDID_SHOWPRINT))
78 cmdFlags |= CMD_FLAG_SUPPORTED_BASIC;
84 if (!cmdFlags || (cmdFlags & CMD_FLAG_NOT_SUPPORTED))
85 return OLECMDERR_E_NOTSUPPORTED;
104 return OLECMDERR_E_NOTSUPPORTED;
122 OLECMD
cmd = { nCmdID };
125 return OLECMDERR_E_NOTSUPPORTED;
127 return IUnknown_Exec(lpUnknown, *pguidCmdGroup, nCmdID, nCmdexecopt, pvaIn, pvaOut);
175 static void *
operator new(
size_t size)
179 static void operator delete(
void *
ptr)
183 static void operator delete(
void *
ptr,
size_t size)
195 BOOL bExcept1, bExcept2;
197 enum { LOW_VALUE = -1, HIGH_VALUE = OLECMDID_CLOSE };
203 for (cmdID = LOW_VALUE; cmdID <= HIGH_VALUE; ++cmdID)
205 cmds[0].cmdID = cmdID;
209 ok(ret1 == ret2,
"cmdID: %ld (%ld vs %ld)\n", cmdID, ret1, ret2);
213 ok(ret1 == ret2,
"cmdID: %ld (%ld vs %ld)\n", cmdID, ret1, ret2);
217 for (cmdID = LOW_VALUE; cmdID <= HIGH_VALUE; ++cmdID)
219 cmds[0].cmdID = cmdID;
224 ok(ret1 == ret2,
"cmdID: %ld (%ld vs %ld)\n", cmdID, ret1, ret2);
226 ret1 = ret2 = 0xDEADFACE;
227 bExcept1 = bExcept2 =
FALSE;
249 ok(ret1 == ret2,
"cmdID: %ld (%ld vs %ld)\n", cmdID, ret1, ret2);
250 ok((bExcept1 && bExcept2),
"cmdID: %ld (%d vs %d)\n", cmdID, bExcept1, bExcept2);
252 pGUID = &CGID_Explorer;
255 ok(ret1 == ret2,
"cmdID: %ld (%ld vs %ld)\n", cmdID, ret1, ret2);
260 ok(ret1 == ret2,
"cmdID: %ld (%ld vs %ld)\n", cmdID, ret1, ret2);
264 for (cmdID = LOW_VALUE; cmdID <= HIGH_VALUE; ++cmdID)
266 cmds[0].cmdID = cmdID;
269 for (cmdID2 = LOW_VALUE; cmdID2 <= HIGH_VALUE; ++cmdID2)
271 cmds[1].cmdID = cmdID2;
274 ok(ret1 == ret2,
"cmdID: %ld (%ld vs %ld)\n", cmdID, ret1, ret2);
277 pGUID = &CGID_Explorer;
278 for (cmdID2 = LOW_VALUE; cmdID2 <= HIGH_VALUE; ++cmdID2)
280 cmds[1].cmdID = cmdID2;
283 ok(ret1 == ret2,
"cmdID: %ld (%ld vs %ld)\n", cmdID, ret1, ret2);
297 cmds[0].cmdID = cmdID = OLECMDID_PROPERTIES;
309 ok(ret1 == ret2,
"cmdID: %ld (%ld vs %ld)\n", cmdID, ret1, ret2);
312 cmds[0].cmdID = cmdID = OLECMDID_SHOWFIND;
324 ok(ret1 == ret2,
"cmdID: %ld (%ld vs %ld)\n", cmdID, ret1, ret2);
334 cmdID = OLECMDID_PROPERTIES;
346 ok(ret1 == ret2,
"cmdID: %ld (%ld vs %ld)\n", cmdID, ret1, ret2);
349 cmdID = OLECMDID_SHOWFIND;
361 ok(ret1 == ret2,
"cmdID: %ld (%ld vs %ld)\n", cmdID, ret1, ret2);
static VOID TEST_MayExecForwardMockup(VOID)
static HRESULT IsQSForwardMockup(_In_opt_ const GUID *pguidCmdGroup, _In_ ULONG cCmds, _In_ OLECMD *prgCmds)
static HRESULT MayQSForwardMockup(_In_ IUnknown *lpUnknown, _In_ INT nUnknown, _In_opt_ const GUID *riidCmdGrp, _In_ ULONG cCmds, _Inout_ OLECMD *prgCmds, _Inout_ OLECMDTEXT *pCmdText)
static BOOL g_bQueryStatus
static HRESULT MayExecForwardMockup(_In_ IUnknown *lpUnknown, _In_ INT nUnknown, _In_opt_ const GUID *pguidCmdGroup, _In_ DWORD nCmdID, _In_ DWORD nCmdexecopt, _In_ VARIANT *pvaIn, _Inout_ VARIANT *pvaOut)
static VOID TEST_MayQSForwardMockup(VOID)
static VOID TEST_IsQSForward(VOID)
#define ok_int(expression, result)
STDMETHODIMP_(ULONG) AddRef() override
STDMETHODIMP Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut) override
STDMETHODIMP_(ULONG) Release() override
STDMETHODIMP QueryInterface(REFIID riid, LPVOID *ppvObj) override
STDMETHODIMP QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[], OLECMDTEXT *pCmdText) override
HRESULT WINAPI IsQSForward(REFGUID pguidCmdGroup, ULONG cCmds, OLECMD *prgCmds)
HRESULT WINAPI IUnknown_QueryStatus(IUnknown *lpUnknown, REFGUID pguidCmdGroup, ULONG cCmds, OLECMD *prgCmds, OLECMDTEXT *pCmdText)
HRESULT WINAPI IUnknown_Exec(IUnknown *lpUnknown, REFGUID pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
HRESULT WINAPI MayQSForward(IUnknown *lpUnknown, PVOID lpReserved, REFGUID riidCmdGrp, ULONG cCmds, OLECMD *prgCmds, OLECMDTEXT *pCmdText)
HRESULT WINAPI MayExecForward(IUnknown *lpUnknown, INT nUnknown, REFGUID pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
#define MAKE_HRESULT(sev, fac, code)
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
HLOCAL NTAPI LocalFree(HLOCAL hMem)
#define EXCEPTION_EXECUTE_HANDLER
#define IsEqualGUID(rguid1, rguid2)
#define _SEH2_EXCEPT(...)
VERSIONHELPERAPI IsWindowsVistaOrGreater()