[SHELL32] Fix IShellExecuteHookW (#8097)

This commit is contained in:
Whindmar Saksit 2025-06-16 21:47:45 +02:00 committed by GitHub
parent c0b4a2cab0
commit a3b032b118
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
12 changed files with 150 additions and 49 deletions

View file

@ -670,7 +670,7 @@ public:
#define CmicFlagsToSeeFlags(flags) ((flags) & SEE_CMIC_COMMON_FLAGS)
static inline UINT SeeFlagsToCmicFlags(UINT flags)
{
if (flags & SEE_MASK_CLASSNAME)
if ((flags & (SEE_MASK_CLASSNAME | SEE_MASK_CLASSKEY)) == SEE_MASK_CLASSNAME)
flags &= ~(SEE_MASK_HASLINKNAME | SEE_MASK_HASTITLE);
return flags & SEE_CMIC_COMMON_FLAGS;
}

View file

@ -678,10 +678,12 @@ HRESULT WINAPI ShellExecCmdLine(
* CMINVOKECOMMANDINFOEX structure.
*/
#define SEE_MASK_UNKNOWN_0x1000 0x00001000 // FIXME: Name
#define SEE_MASK_NO_HOOKS 0x00002000 // https://www.yisu.com/ask/30968554.html
#define SEE_MASK_HASLINKNAME 0x00010000
#define SEE_MASK_FLAG_SEPVDM 0x00020000
#define SEE_MASK_USE_RESERVED 0x00040000
#define SEE_MASK_HASTITLE 0x00080000
#define SEE_MASK_FILEANDURL 0x00400000 // https://textslashplain.com/2019/09/25/web-to-app-communication-directinvoke/
HINSTANCE WINAPI
RealShellExecuteA(
@ -783,6 +785,13 @@ HRESULT WINAPI SHCreateDefClassObject(
void WINAPI SHFreeUnusedLibraries(void);
HRESULT WINAPI SHExtCoCreateInstance(
_In_opt_ LPCWSTR aclsid,
_In_opt_ const CLSID *clsid,
_In_opt_ LPUNKNOWN pUnkOuter,
_In_ REFIID refiid,
_Out_ LPVOID *ppv);
/* SHCreateLinks flags */
#define SHCLF_PREFIXNAME 0x01
#define SHCLF_CREATEONDESKTOP 0x02