|
1 | 1 | /* |
2 | | - * ReactOS undocumented shell interface |
3 | | - * |
4 | | - * Copyright 2009 Andrew Hill <ash77 at domain reactos.org> |
5 | | - * Copyright 2013 Dominik Hornung |
6 | | - * |
7 | | - * This library is free software; you can redistribute it and/or |
8 | | - * modify it under the terms of the GNU Lesser General Public |
9 | | - * License as published by the Free Software Foundation; either |
10 | | - * version 2.1 of the License, or (at your option) any later version. |
11 | | - * |
12 | | - * This library is distributed in the hope that it will be useful, |
13 | | - * but WITHOUT ANY WARRANTY; without even the implied warranty of |
14 | | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
15 | | - * Lesser General Public License for more details. |
16 | | - * |
17 | | - * You should have received a copy of the GNU Lesser General Public |
18 | | - * License along with this library; if not, write to the Free Software |
19 | | - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| 2 | + * PROJECT: ReactOS header |
| 3 | + * LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later) |
| 4 | + * PURPOSE: Undocumented shell interface |
| 5 | + * COPYRIGHT: Copyright 2009 Andrew Hill <ash77 at domain reactos.org> |
| 6 | + * Copyright 2013 Dominik Hornung |
| 7 | + * Copyright 2025 Katayama Hirofumi MZ <[email protected]> |
20 | 8 | */ |
21 | 9 |
|
22 | | -#ifndef __SHLOBJ_UNDOC__H |
23 | | -#define __SHLOBJ_UNDOC__H |
| 10 | +#pragma once |
| 11 | + |
| 12 | +#define SHLWAPI_ISHELLFOLDER_HELPERS |
| 13 | +#include <shlwapi_undoc.h> // For ASSOCQUERY |
24 | 14 |
|
25 | 15 | #ifdef __cplusplus |
26 | 16 | extern "C" { |
27 | | -#endif /* defined(__cplusplus) */ |
| 17 | +#endif |
28 | 18 |
|
29 | 19 | typedef struct tagSLOTITEMDATA |
30 | 20 | { |
@@ -817,12 +807,145 @@ DECLARE_INTERFACE_(ITrayPriv, IUnknown) |
817 | 807 | #define ITrayPriv_AppendMenu(T,a) (T)->lpVtbl->AppendMenu(T,a) |
818 | 808 | #endif |
819 | 809 |
|
| 810 | +/***************************************************************************** |
| 811 | + * IAssociationElement interface |
| 812 | + * |
| 813 | + * @see IAssociationElementOld |
| 814 | + * @see https://www.geoffchappell.com/studies/windows/shell/shlwapi/interfaces/iassociationelement.htm |
| 815 | + */ |
| 816 | +#define INTERFACE IAssociationElement |
| 817 | +DECLARE_INTERFACE_(IAssociationElement, IUnknown) // {D8F6AD5B-B44F-4BCC-88FD-EB3473DB7502} |
| 818 | +{ |
| 819 | + /*** IUnknown ***/ |
| 820 | + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; |
| 821 | + STDMETHOD_(ULONG,AddRef)(THIS) PURE; |
| 822 | + STDMETHOD_(ULONG,Release)(THIS) PURE; |
| 823 | + /*** IAssociationElement ***/ |
| 824 | + STDMETHOD(QueryString)(THIS_ ASSOCQUERY query, PCWSTR key, PWSTR *ppszValue) PURE; |
| 825 | + STDMETHOD(QueryDword)(THIS_ ASSOCQUERY query, PCWSTR key, DWORD *pdwValue) PURE; |
| 826 | + STDMETHOD(QueryGuid)(THIS_ ASSOCQUERY query, PCWSTR key, GUID *pguid) PURE; |
| 827 | + STDMETHOD(QueryExists)(THIS_ ASSOCQUERY query, PCWSTR key) PURE; |
| 828 | + STDMETHOD(QueryDirect)(THIS_ ASSOCQUERY query, PCWSTR key, FLAGGED_BYTE_BLOB **ppBlob) PURE; |
| 829 | + STDMETHOD(QueryObject)(THIS_ ASSOCQUERY query, PCWSTR key, REFIID riid, PVOID *ppvObj) PURE; |
| 830 | +}; |
| 831 | +#undef INTERFACE |
| 832 | + |
| 833 | +#ifdef COBJMACROS |
| 834 | +#define IAssociationElement_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) |
| 835 | +#define IAssociationElement_AddRef(T) (T)->lpVtbl->AddRef(T) |
| 836 | +#define IAssociationElement_Release(T) (T)->lpVtbl->Release(T) |
| 837 | +#define IAssociationElement_QueryString(T,a,b,c) (T)->lpVtbl->QueryString(T,a,b,c) |
| 838 | +#define IAssociationElement_QueryDword(T,a,b,c) (T)->lpVtbl->QueryDword(T,a,b,c) |
| 839 | +#define IAssociationElement_QueryGuid(T,a,b,c) (T)->lpVtbl->QueryGuid(T,a,b,c) |
| 840 | +#define IAssociationElement_QueryExists(T,a,b) (T)->lpVtbl->QueryExists(T,a,b) |
| 841 | +#define IAssociationElement_QueryDirect(T,a,b,c) (T)->lpVtbl->QueryDirect(T,a,b,c) |
| 842 | +#define IAssociationElement_QueryObject(T,a,b,c,d) (T)->lpVtbl->QueryObject(T,a,b,c,d) |
| 843 | +#endif |
| 844 | + |
| 845 | +/***************************************************************************** |
| 846 | + * IEnumAssociationElements interface |
| 847 | + * |
| 848 | + * @see https://www.geoffchappell.com/studies/windows/shell/shell32/interfaces/ienumassociationelements.htm |
| 849 | + */ |
| 850 | +#define INTERFACE IEnumAssociationElements |
| 851 | +DECLARE_INTERFACE_(IEnumAssociationElements, IUnknown) // {A6B0FB57-7523-4439-9425-EBE99823B828} |
| 852 | +{ |
| 853 | + /*** IUnknown ***/ |
| 854 | + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; |
| 855 | + STDMETHOD_(ULONG,AddRef)(THIS) PURE; |
| 856 | + STDMETHOD_(ULONG,Release)(THIS) PURE; |
| 857 | + /*** IEnumAssociationElements ***/ |
| 858 | + STDMETHOD(Next)(THIS_ ULONG celt, IAssociationElement *pElement, ULONG *pceltFetched) PURE; |
| 859 | + STDMETHOD(Skip)(THIS_ ULONG celt) PURE; |
| 860 | + STDMETHOD(Reset)(THIS) PURE; |
| 861 | + STDMETHOD(Clone)(THIS_ IEnumAssociationElements **ppNew) PURE; |
| 862 | +}; |
| 863 | +#undef INTERFACE |
| 864 | + |
| 865 | +#ifdef COBJMACROS |
| 866 | +#define IEnumAssociationElements_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) |
| 867 | +#define IEnumAssociationElements_AddRef(T) (T)->lpVtbl->AddRef(T) |
| 868 | +#define IEnumAssociationElements_Release(T) (T)->lpVtbl->Release(T) |
| 869 | +#define IEnumAssociationElements_Next(T,a,b,c) (T)->lpVtbl->Next(T,a,b,c) |
| 870 | +#define IEnumAssociationElements_Skip(T,a) (T)->lpVtbl->Skip(T,a) |
| 871 | +#define IEnumAssociationElements_Reset(T) (T)->lpVtbl->Reset(T) |
| 872 | +#define IEnumAssociationElements_Clone(T,a) (T)->lpVtbl->Clone(T,a) |
| 873 | +#endif |
| 874 | + |
| 875 | +/***************************************************************************** |
| 876 | + * IAssociationArrayOld interface |
| 877 | + * |
| 878 | + * @see IAssociationArray |
| 879 | + * @see https://www.geoffchappell.com/studies/windows/shell/shell32/interfaces/iassociationarray.htm |
| 880 | + */ |
| 881 | +#define INTERFACE IAssociationArrayOld |
| 882 | +DECLARE_INTERFACE_(IAssociationArrayOld, IUnknown) // {3B877E3C-67DE-4F9A-B29B-17D0A1521C6A} |
| 883 | +{ |
| 884 | + /*** IUnknown ***/ |
| 885 | + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; |
| 886 | + STDMETHOD_(ULONG,AddRef)(THIS) PURE; |
| 887 | + STDMETHOD_(ULONG,Release)(THIS) PURE; |
| 888 | + /*** IAssociationArrayOld ***/ |
| 889 | + STDMETHOD(EnumElements)(THIS_ ULONG flags, IEnumAssociationElements **ppElement) PURE; |
| 890 | + STDMETHOD(QueryString)(THIS_ ULONG flags, ASSOCQUERY query, PCWSTR key, PWSTR *ppszValue) PURE; |
| 891 | + STDMETHOD(QueryDword)(THIS_ ULONG flags, ASSOCQUERY query, PCWSTR key, DWORD *pdwValue) PURE; |
| 892 | + STDMETHOD(QueryExists)(THIS_ ULONG flags, ASSOCQUERY query, PCWSTR key) PURE; |
| 893 | + STDMETHOD(QueryDirect)(THIS_ ULONG flags, ASSOCQUERY query, PCWSTR key, FLAGGED_BYTE_BLOB **ppBlob) PURE; |
| 894 | + STDMETHOD(QueryObject)(THIS_ ULONG flags, ASSOCQUERY query, PCWSTR key, REFIID riid, PVOID *ppvObj) PURE; |
| 895 | +}; |
| 896 | +#undef INTERFACE |
| 897 | + |
| 898 | +#ifdef COBJMACROS |
| 899 | +#define IAssociationArrayOld_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) |
| 900 | +#define IAssociationArrayOld_AddRef(T) (T)->lpVtbl->AddRef(T) |
| 901 | +#define IAssociationArrayOld_Release(T) (T)->lpVtbl->Release(T) |
| 902 | +#define IAssociationArrayOld_EnumElements(T,a,b) (T)->lpVtbl->EnumElements(T,a,b) |
| 903 | +#define IAssociationArrayOld_QueryString(T,a,b,c,d) (T)->lpVtbl->QueryString(T,a,b,c,d) |
| 904 | +#define IAssociationArrayOld_QueryDword(T,a,b,c,d) (T)->lpVtbl->QueryDword(T,a,b,c,d) |
| 905 | +#define IAssociationArrayOld_QueryExists(T,a,b,c) (T)->lpVtbl->QueryExists(T,a,b,c) |
| 906 | +#define IAssociationArrayOld_QueryDirect(T,a,b,c,d) (T)->lpVtbl->QueryDirect(T,a,b,c,d) |
| 907 | +#define IAssociationArrayOld_QueryObject(T,a,b,c,d,e) (T)->lpVtbl->QueryObject(T,a,b,c,d,e) |
| 908 | +#endif |
| 909 | + |
| 910 | +/***************************************************************************** |
| 911 | + * IAssociationArray interface |
| 912 | + * |
| 913 | + * @see IAssociationArrayOld |
| 914 | + * @see https://www.geoffchappell.com/studies/windows/shell/shell32/interfaces/iassociationarray.htm |
| 915 | + */ |
| 916 | +#define INTERFACE IAssociationArray |
| 917 | +DECLARE_INTERFACE_(IAssociationArray, IUnknown) // {19ADBAFD-1C5F-4FC7-94EE-846702DFB58B} |
| 918 | +{ |
| 919 | + /*** IUnknown ***/ |
| 920 | + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; |
| 921 | + STDMETHOD_(ULONG,AddRef)(THIS) PURE; |
| 922 | + STDMETHOD_(ULONG,Release)(THIS) PURE; |
| 923 | + /*** IAssociationArray ***/ |
| 924 | + STDMETHOD(QueryString)(THIS_ ASSOCQUERY query, PCWSTR key, PWSTR *ppszValue) PURE; |
| 925 | + STDMETHOD(QueryDword)(THIS_ ASSOCQUERY query, PCWSTR key, DWORD *pdwValue) PURE; |
| 926 | + STDMETHOD(QueryGuid)(THIS_ ASSOCQUERY query, PCWSTR key, GUID *pguid) PURE; |
| 927 | + STDMETHOD(QueryExists)(THIS_ ASSOCQUERY query, PCWSTR key) PURE; |
| 928 | + STDMETHOD(QueryDirect)(THIS_ ASSOCQUERY query, PCWSTR key, FLAGGED_BYTE_BLOB **ppBlob) PURE; |
| 929 | + STDMETHOD(QueryObject)(THIS_ ASSOCQUERY query, PCWSTR key, REFIID riid, PVOID *ppvObj) PURE; |
| 930 | +}; |
| 931 | +#undef INTERFACE |
| 932 | + |
| 933 | +#ifdef COBJMACROS |
| 934 | +#define IAssociationArray_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) |
| 935 | +#define IAssociationArray_AddRef(T) (T)->lpVtbl->AddRef(T) |
| 936 | +#define IAssociationArray_Release(T) (T)->lpVtbl->Release(T) |
| 937 | +#define IAssociationArray_QueryString(T,a,b,c) (T)->lpVtbl->QueryString(T,a,b,c) |
| 938 | +#define IAssociationArray_QueryDword(T,a,b,c) (T)->lpVtbl->QueryDword(T,a,b,c) |
| 939 | +#define IAssociationArray_QueryGuid(T,a,b,c) (T)->lpVtbl->QueryGuid(T,a,b,c) |
| 940 | +#define IAssociationArray_QueryExists(T,a,b) (T)->lpVtbl->QueryExists(T,a,b) |
| 941 | +#define IAssociationArray_QueryDirect(T,a,b,c) (T)->lpVtbl->QueryDirect(T,a,b,c) |
| 942 | +#define IAssociationArray_QueryObject(T,a,b,c,d) (T)->lpVtbl->QueryObject(T,a,b,c,d) |
| 943 | +#endif |
| 944 | + |
820 | 945 | HANDLE WINAPI SHCreateDesktop(IShellDesktopTray*); |
821 | 946 | BOOL WINAPI SHDesktopMessageLoop(HANDLE); |
822 | 947 | HRESULT WINAPI SHCreateFileDataObject(PCIDLIST_ABSOLUTE pidlFolder, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, IDataObject* pDataInner, IDataObject** ppDataObj); |
823 | 948 |
|
824 | 949 | #ifdef __cplusplus |
825 | 950 | } /* extern "C" */ |
826 | | -#endif /* defined(__cplusplus) */ |
827 | | - |
828 | | -#endif // __SHLOBJ_UNDOC__H |
| 951 | +#endif |
0 commit comments