From 3ed568c40d5c7dcfb42a8d5cb8cb008dd1323552 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Fri, 23 Sep 2011 23:12:53 +0000 Subject: [PATCH] [PSDK] * Bring-in some idl changes from Wine. These changes (and the related changes below) are to allow us to sync shell32 tests to Wine 1.3.29. [UUID] * CLSID_TaskbarList is no longer needed in here. [ACTXPRXY] * Sync with Wine 1.3.29. svn path=/trunk/; revision=53820 --- reactos/dll/win32/actxprxy/CMakeLists.txt | 2 + reactos/dll/win32/actxprxy/actxprxy.rbuild | 1 + .../dll/win32/actxprxy/actxprxy_activscp.idl | 6 + .../dll/win32/actxprxy/actxprxy_comcat.idl | 6 + .../dll/win32/actxprxy/actxprxy_docobj.idl | 6 + reactos/dll/win32/actxprxy/actxprxy_hlink.idl | 6 + .../dll/win32/actxprxy/actxprxy_htiframe.idl | 6 + .../dll/win32/actxprxy/actxprxy_objsafe.idl | 6 + reactos/dll/win32/actxprxy/actxprxy_ocmm.idl | 6 + .../dll/win32/actxprxy/actxprxy_servprov.idl | 6 + .../dll/win32/actxprxy/actxprxy_shldisp.idl | 27 + .../dll/win32/actxprxy/actxprxy_shobjidl.idl | 6 + .../dll/win32/actxprxy/actxprxy_urlhist.idl | 6 + reactos/dll/win32/actxprxy/usrmarshal.c | 43 + reactos/include/psdk/CMakeLists.txt | 1 + reactos/include/psdk/knownfolders.h | 142 ++ reactos/include/psdk/objectarray.idl | 47 + reactos/include/psdk/propsys.idl | 1 + reactos/include/psdk/psdk.rbuild | 1 + reactos/include/psdk/shldisp.idl | 369 +++++ reactos/include/psdk/shlguid.h | 20 +- reactos/include/psdk/shobjidl.idl | 1413 ++++++++++++++++- reactos/include/psdk/shtypes.idl | 30 + reactos/lib/sdk/uuid/uuid.c | 1 - 24 files changed, 2104 insertions(+), 54 deletions(-) create mode 100644 reactos/dll/win32/actxprxy/actxprxy_shldisp.idl create mode 100644 reactos/include/psdk/knownfolders.h create mode 100644 reactos/include/psdk/objectarray.idl diff --git a/reactos/dll/win32/actxprxy/CMakeLists.txt b/reactos/dll/win32/actxprxy/CMakeLists.txt index d4898d1e41e..46f81b6db51 100644 --- a/reactos/dll/win32/actxprxy/CMakeLists.txt +++ b/reactos/dll/win32/actxprxy/CMakeLists.txt @@ -13,6 +13,7 @@ add_rpcproxy_files( actxprxy_objsafe.idl actxprxy_ocmm.idl actxprxy_servprov.idl + actxprxy_shldisp.idl actxprxy_shobjidl.idl actxprxy_urlhist.idl) @@ -26,6 +27,7 @@ list(APPEND SOURCE ${CMAKE_CURRENT_BINARY_DIR}/actxprxy_objsafe_p.c ${CMAKE_CURRENT_BINARY_DIR}/actxprxy_ocmm_p.c ${CMAKE_CURRENT_BINARY_DIR}/actxprxy_servprov_p.c + ${CMAKE_CURRENT_BINARY_DIR}/actxprxy_shldisp_p.c ${CMAKE_CURRENT_BINARY_DIR}/actxprxy_shobjidl_p.c ${CMAKE_CURRENT_BINARY_DIR}/actxprxy_urlhist_p.c ${CMAKE_CURRENT_BINARY_DIR}/proxy.dlldata.c diff --git a/reactos/dll/win32/actxprxy/actxprxy.rbuild b/reactos/dll/win32/actxprxy/actxprxy.rbuild index 808f69474d2..1d44240c542 100644 --- a/reactos/dll/win32/actxprxy/actxprxy.rbuild +++ b/reactos/dll/win32/actxprxy/actxprxy.rbuild @@ -30,6 +30,7 @@ actxprxy_objsafe.idl actxprxy_ocmm.idl actxprxy_servprov.idl + actxprxy_shldisp.idl actxprxy_shobjidl.idl actxprxy_urlhist.idl diff --git a/reactos/dll/win32/actxprxy/actxprxy_activscp.idl b/reactos/dll/win32/actxprxy/actxprxy_activscp.idl index c056a0ebd15..3f0fda76cd2 100644 --- a/reactos/dll/win32/actxprxy/actxprxy_activscp.idl +++ b/reactos/dll/win32/actxprxy/actxprxy_activscp.idl @@ -19,3 +19,9 @@ /* just a wrapper for activscp.idl */ #include "activscp.idl" + +[ + threading(both), + uuid(b8da6310-e19b-11d0-933c-00a0c90dcaa9) /* IActiveScriptStats */ +] +coclass PSFactoryBuffer { interface IFactoryBuffer; } diff --git a/reactos/dll/win32/actxprxy/actxprxy_comcat.idl b/reactos/dll/win32/actxprxy/actxprxy_comcat.idl index 6c8155fe29f..548aa0d17a0 100644 --- a/reactos/dll/win32/actxprxy/actxprxy_comcat.idl +++ b/reactos/dll/win32/actxprxy/actxprxy_comcat.idl @@ -19,3 +19,9 @@ /* just a wrapper for comcat.idl */ #include "comcat.idl" + +[ + threading(both), + uuid(b8da6310-e19b-11d0-933c-00a0c90dcaa9) /* IActiveScriptStats */ +] +coclass PSFactoryBuffer { interface IFactoryBuffer; } diff --git a/reactos/dll/win32/actxprxy/actxprxy_docobj.idl b/reactos/dll/win32/actxprxy/actxprxy_docobj.idl index 711c3851e3d..8b2a83f65f2 100644 --- a/reactos/dll/win32/actxprxy/actxprxy_docobj.idl +++ b/reactos/dll/win32/actxprxy/actxprxy_docobj.idl @@ -19,3 +19,9 @@ /* just a wrapper for docobj.idl */ #include "docobj.idl" + +[ + threading(both), + uuid(b8da6310-e19b-11d0-933c-00a0c90dcaa9) /* IActiveScriptStats */ +] +coclass PSFactoryBuffer { interface IFactoryBuffer; } diff --git a/reactos/dll/win32/actxprxy/actxprxy_hlink.idl b/reactos/dll/win32/actxprxy/actxprxy_hlink.idl index 820967d2de4..479e937cbf1 100644 --- a/reactos/dll/win32/actxprxy/actxprxy_hlink.idl +++ b/reactos/dll/win32/actxprxy/actxprxy_hlink.idl @@ -19,3 +19,9 @@ /* just a wrapper for hlink.idl */ #include "hlink.idl" + +[ + threading(both), + uuid(b8da6310-e19b-11d0-933c-00a0c90dcaa9) /* IActiveScriptStats */ +] +coclass PSFactoryBuffer { interface IFactoryBuffer; } diff --git a/reactos/dll/win32/actxprxy/actxprxy_htiframe.idl b/reactos/dll/win32/actxprxy/actxprxy_htiframe.idl index 146b0a2e4c6..e3d5f723c91 100644 --- a/reactos/dll/win32/actxprxy/actxprxy_htiframe.idl +++ b/reactos/dll/win32/actxprxy/actxprxy_htiframe.idl @@ -19,3 +19,9 @@ /* just a wrapper for htiframe.idl */ #include "htiframe.idl" + +[ + threading(both), + uuid(b8da6310-e19b-11d0-933c-00a0c90dcaa9) /* IActiveScriptStats */ +] +coclass PSFactoryBuffer { interface IFactoryBuffer; } diff --git a/reactos/dll/win32/actxprxy/actxprxy_objsafe.idl b/reactos/dll/win32/actxprxy/actxprxy_objsafe.idl index 67e878b69cd..771a4d9ccb0 100644 --- a/reactos/dll/win32/actxprxy/actxprxy_objsafe.idl +++ b/reactos/dll/win32/actxprxy/actxprxy_objsafe.idl @@ -19,3 +19,9 @@ /* just a wrapper for objsafe.idl */ #include "objsafe.idl" + +[ + threading(both), + uuid(b8da6310-e19b-11d0-933c-00a0c90dcaa9) /* IActiveScriptStats */ +] +coclass PSFactoryBuffer { interface IFactoryBuffer; } diff --git a/reactos/dll/win32/actxprxy/actxprxy_ocmm.idl b/reactos/dll/win32/actxprxy/actxprxy_ocmm.idl index 2df49ce8995..75e4788aa54 100644 --- a/reactos/dll/win32/actxprxy/actxprxy_ocmm.idl +++ b/reactos/dll/win32/actxprxy/actxprxy_ocmm.idl @@ -19,3 +19,9 @@ /* just a wrapper for ocmm.idl */ #include "ocmm.idl" + +[ + threading(both), + uuid(b8da6310-e19b-11d0-933c-00a0c90dcaa9) /* IActiveScriptStats */ +] +coclass PSFactoryBuffer { interface IFactoryBuffer; } diff --git a/reactos/dll/win32/actxprxy/actxprxy_servprov.idl b/reactos/dll/win32/actxprxy/actxprxy_servprov.idl index 08b26efcc19..1388f23e43b 100644 --- a/reactos/dll/win32/actxprxy/actxprxy_servprov.idl +++ b/reactos/dll/win32/actxprxy/actxprxy_servprov.idl @@ -1 +1,7 @@ #include "servprov.idl" + +[ + threading(both), + uuid(b8da6310-e19b-11d0-933c-00a0c90dcaa9) /* IActiveScriptStats */ +] +coclass PSFactoryBuffer { interface IFactoryBuffer; } diff --git a/reactos/dll/win32/actxprxy/actxprxy_shldisp.idl b/reactos/dll/win32/actxprxy/actxprxy_shldisp.idl new file mode 100644 index 00000000000..e5ddb18cfc4 --- /dev/null +++ b/reactos/dll/win32/actxprxy/actxprxy_shldisp.idl @@ -0,0 +1,27 @@ +/* + * Copyright 2011 Alexandre Julliard + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +/* just a wrapper for shldisp.idl */ + +#include "shldisp.idl" + +[ + threading(both), + uuid(b8da6310-e19b-11d0-933c-00a0c90dcaa9) /* IActiveScriptStats */ +] +coclass PSFactoryBuffer { interface IFactoryBuffer; } diff --git a/reactos/dll/win32/actxprxy/actxprxy_shobjidl.idl b/reactos/dll/win32/actxprxy/actxprxy_shobjidl.idl index 71912fd0eb4..ccff236dca3 100644 --- a/reactos/dll/win32/actxprxy/actxprxy_shobjidl.idl +++ b/reactos/dll/win32/actxprxy/actxprxy_shobjidl.idl @@ -19,3 +19,9 @@ /* just a wrapper for shobjidl.idl */ #include "shobjidl.idl" + +[ + threading(both), + uuid(b8da6310-e19b-11d0-933c-00a0c90dcaa9) /* IActiveScriptStats */ +] +coclass PSFactoryBuffer { interface IFactoryBuffer; } diff --git a/reactos/dll/win32/actxprxy/actxprxy_urlhist.idl b/reactos/dll/win32/actxprxy/actxprxy_urlhist.idl index 18861b3a713..f9877527e88 100644 --- a/reactos/dll/win32/actxprxy/actxprxy_urlhist.idl +++ b/reactos/dll/win32/actxprxy/actxprxy_urlhist.idl @@ -19,3 +19,9 @@ /* just a wrapper for urlhist.idl */ #include "urlhist.idl" + +[ + threading(both), + uuid(b8da6310-e19b-11d0-933c-00a0c90dcaa9) /* IActiveScriptStats */ +] +coclass PSFactoryBuffer { interface IFactoryBuffer; } diff --git a/reactos/dll/win32/actxprxy/usrmarshal.c b/reactos/dll/win32/actxprxy/usrmarshal.c index f2aacf85a30..1683f2cfb0e 100644 --- a/reactos/dll/win32/actxprxy/usrmarshal.c +++ b/reactos/dll/win32/actxprxy/usrmarshal.c @@ -34,6 +34,7 @@ #include "servprov.h" #include "comcat.h" #include "docobj.h" +#include "shobjidl.h" #include "wine/debug.h" @@ -168,3 +169,45 @@ HRESULT __RPC_STUB IEnumOleDocumentViews_Next_Stub( TRACE("(%p)\n", This); return IEnumOleDocumentViews_Next( This, cViews, rgpView, pcFetched ); } + +HRESULT CALLBACK IEnumShellItems_Next_Proxy( + IEnumShellItems *This, + ULONG celt, + IShellItem **rgelt, + ULONG *pceltFetched) +{ + ULONG fetched; + TRACE("(%p)->(%d, %p, %p)\n", This, celt, rgelt, pceltFetched); + if (!pceltFetched) pceltFetched = &fetched; + return IEnumShellItems_RemoteNext_Proxy(This, celt, rgelt, pceltFetched); +} + +HRESULT __RPC_STUB IEnumShellItems_Next_Stub( + IEnumShellItems *This, + ULONG celt, + IShellItem **rgelt, + ULONG *pceltFetched) +{ + HRESULT hr; + TRACE("(%p)->(%d, %p, %p)\n", This, celt, rgelt, pceltFetched); + *pceltFetched = 0; + hr = IEnumShellItems_Next(This, celt, rgelt, pceltFetched); + if (hr == S_OK) *pceltFetched = celt; + return hr; +} + +HRESULT CALLBACK IModalWindow_Show_Proxy( + IModalWindow *This, + HWND hwndOwner) +{ + TRACE("(%p)->(%p)\n", This, hwndOwner); + return IModalWindow_RemoteShow_Proxy(This, hwndOwner); +} + +HRESULT __RPC_STUB IModalWindow_Show_Stub( + IModalWindow *This, + HWND hwndOwner) +{ + TRACE("(%p)->(%p)\n", This, hwndOwner); + return IModalWindow_Show(This, hwndOwner); +} diff --git a/reactos/include/psdk/CMakeLists.txt b/reactos/include/psdk/CMakeLists.txt index 668f03c51e5..635351f18f8 100644 --- a/reactos/include/psdk/CMakeLists.txt +++ b/reactos/include/psdk/CMakeLists.txt @@ -59,6 +59,7 @@ list(APPEND SOURCE netcon.idl netfw.idl oaidl.idl + objectarray.idl objidl.idl objsafe.idl ocidl.idl diff --git a/reactos/include/psdk/knownfolders.h b/reactos/include/psdk/knownfolders.h new file mode 100644 index 00000000000..2fa5664d8bc --- /dev/null +++ b/reactos/include/psdk/knownfolders.h @@ -0,0 +1,142 @@ +/* + * Copyright 2010 Hans Leidekker for CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifdef DEFINE_KNOWN_FOLDER +#undef DEFINE_KNOWN_FOLDER +#endif + +#ifdef INITGUID +#ifdef __cplusplus +#define DEFINE_KNOWN_FOLDER(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ + EXTERN_C const GUID name DECLSPEC_HIDDEN; \ + EXTERN_C const GUID name = \ + { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } } +#else +#define DEFINE_KNOWN_FOLDER(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ + const GUID name DECLSPEC_HIDDEN; \ + const GUID name = \ + { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } } +#endif +#else +#define DEFINE_KNOWN_FOLDER(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ + EXTERN_C const GUID name DECLSPEC_HIDDEN +#endif + +DEFINE_KNOWN_FOLDER(FOLDERID_AddNewPrograms, 0xde61d971, 0x5ebc, 0x4f02, 0xa3, 0xa9, 0x6c, 0x82, 0x89, 0x5e, 0x5c, 0x04); +DEFINE_KNOWN_FOLDER(FOLDERID_AdminTools, 0x724ef170, 0xa42d, 0x4fef, 0x9f, 0x26, 0xb6, 0x0e, 0x84, 0x6f, 0xba, 0x4f); +DEFINE_KNOWN_FOLDER(FOLDERID_AppUpdates, 0xa305ce99, 0xf527, 0x492b, 0x8b, 0x1a, 0x7e, 0x76, 0xfa, 0x98, 0xd6, 0xe4); +DEFINE_KNOWN_FOLDER(FOLDERID_CDBurning, 0x9e52ab10, 0xf80d, 0x49df, 0xac, 0xb8, 0x43, 0x30, 0xf5, 0x68, 0x78, 0x55); +DEFINE_KNOWN_FOLDER(FOLDERID_ChangeRemovePrograms, 0xdf7266ac, 0x9274, 0x4867, 0x8d, 0x55, 0x3b, 0xd6, 0x61, 0xde, 0x87, 0x2d); +DEFINE_KNOWN_FOLDER(FOLDERID_CommonAdminTools, 0xd0384e7d, 0xbac3, 0x4797, 0x8f, 0x14, 0xcb, 0xa2, 0x29, 0xb3, 0x92, 0xb5); +DEFINE_KNOWN_FOLDER(FOLDERID_CommonOEMLinks, 0xc1bae2d0, 0x10df, 0x4334, 0xbe, 0xdd, 0x7a, 0xa2, 0x0b, 0x22, 0x7a, 0x9d); +DEFINE_KNOWN_FOLDER(FOLDERID_CommonPrograms, 0x0139d44e, 0x6afe, 0x49f2, 0x86, 0x90, 0x3d, 0xaf, 0xca, 0xe6, 0xff, 0xb8); +DEFINE_KNOWN_FOLDER(FOLDERID_CommonStartMenu, 0xa4115719, 0xd62e, 0x491d, 0xaa, 0x7c, 0xe7, 0x4b, 0x8b, 0xe3, 0xb0, 0x67); +DEFINE_KNOWN_FOLDER(FOLDERID_CommonStartup, 0x82a5ea35, 0xd9cd, 0x47c5, 0x96, 0x29, 0xe1, 0x5d, 0x2f, 0x71, 0x4e, 0x6e); +DEFINE_KNOWN_FOLDER(FOLDERID_CommonTemplates, 0xb94237e7, 0x57ac, 0x4347, 0x91, 0x51, 0xb0, 0x8c, 0x6c, 0x32, 0xd1, 0xf7); +DEFINE_KNOWN_FOLDER(FOLDERID_ComputerFolder, 0x0ac0837c, 0xbbf8, 0x452a, 0x85, 0x0d, 0x79, 0xd0, 0x8e, 0x66, 0x7c, 0xa7); +DEFINE_KNOWN_FOLDER(FOLDERID_ConflictFolder, 0x4bfefb45, 0x347d, 0x4006, 0xa5, 0xbe, 0xac, 0x0c, 0xb0, 0x56, 0x71, 0x92); +DEFINE_KNOWN_FOLDER(FOLDERID_ConnectionsFolder, 0x6f0cd92b, 0x2e97, 0x45d1, 0x88, 0xff, 0xb0, 0xd1, 0x86, 0xb8, 0xde, 0xdd); +DEFINE_KNOWN_FOLDER(FOLDERID_Contacts, 0x56784854, 0xc6cb, 0x462b, 0x81, 0x69, 0x88, 0xe3, 0x50, 0xac, 0xb8, 0x82); +DEFINE_KNOWN_FOLDER(FOLDERID_ControlPanelFolder, 0x82a74aeb, 0xaeb4, 0x465c, 0xa0, 0x14, 0xd0, 0x97, 0xee, 0x34, 0x6d, 0x63); +DEFINE_KNOWN_FOLDER(FOLDERID_Cookies, 0x2b0f765d, 0xc0e9, 0x4171, 0x90, 0x8e, 0x08, 0xa6, 0x11, 0xb8, 0x4f, 0xf6); +DEFINE_KNOWN_FOLDER(FOLDERID_Desktop, 0xb4bfcc3a, 0xdb2c, 0x424c, 0xb0, 0x29, 0x7f, 0xe9, 0x9a, 0x87, 0xc6, 0x41); +DEFINE_KNOWN_FOLDER(FOLDERID_DeviceMetadataStore, 0x5ce4a5e9, 0xe4eb, 0x479d, 0xb8, 0x9f, 0x13, 0x0c, 0x02, 0x88, 0x61, 0x55); +DEFINE_KNOWN_FOLDER(FOLDERID_Documents, 0xfdd39ad0, 0x238f, 0x46af, 0xad, 0xb4, 0x6c, 0x85, 0x48, 0x03, 0x69, 0xc7); +DEFINE_KNOWN_FOLDER(FOLDERID_DocumentsLibrary, 0x7b0db17d, 0x9cd2, 0x4a93, 0x97, 0x33, 0x46, 0xcc, 0x89, 0x02, 0x2e, 0x7c); +DEFINE_KNOWN_FOLDER(FOLDERID_Downloads, 0x374de290, 0x123f, 0x4565, 0x91, 0x64, 0x39, 0xc4, 0x92, 0x5e, 0x46, 0x7b); +DEFINE_KNOWN_FOLDER(FOLDERID_Favorites, 0x1777f761, 0x68ad, 0x4d8a, 0x87, 0xbd, 0x30, 0xb7, 0x59, 0xfa, 0x33, 0xdd); +DEFINE_KNOWN_FOLDER(FOLDERID_Fonts, 0xfd228cb7, 0xae11, 0x4ae3, 0x86, 0x4c, 0x16, 0xf3, 0x91, 0x0a, 0xb8, 0xfe); +DEFINE_KNOWN_FOLDER(FOLDERID_Games, 0xcac52c1a, 0xb53d, 0x4edc, 0x92, 0xd7, 0x6b, 0x2e, 0x8a, 0xc1, 0x94, 0x34); +DEFINE_KNOWN_FOLDER(FOLDERID_GameTasks, 0x054fae61, 0x4dd8, 0x4787, 0x80, 0xb6, 0x09, 0x02, 0x20, 0xc4, 0xb7, 0x00); +DEFINE_KNOWN_FOLDER(FOLDERID_History, 0xd9dc8a3b, 0xb784, 0x432e, 0xa7, 0x81, 0x5a, 0x11, 0x30, 0xa7, 0x59, 0x63); +DEFINE_KNOWN_FOLDER(FOLDERID_HomeGroup, 0x52528a6b, 0xb9e3, 0x4add, 0xb6, 0x0d, 0x58, 0x8c, 0x2d, 0xba, 0x84, 0x2d); +DEFINE_KNOWN_FOLDER(FOLDERID_ImplicitAppShortcuts, 0xbcb5256f, 0x79f6, 0x4cee, 0xb7, 0x25, 0xdc, 0x34, 0xe4, 0x02, 0xfd, 0x46); +DEFINE_KNOWN_FOLDER(FOLDERID_InternetCache, 0x352481e8, 0x33be, 0x4251, 0xba, 0x85, 0x60, 0x07, 0xca, 0xed, 0xcf, 0x9d); +DEFINE_KNOWN_FOLDER(FOLDERID_InternetFolder, 0x4d9f7874, 0x4e0c, 0x4904, 0x96, 0x7b, 0x40, 0xb0, 0xd2, 0x0c, 0x3e, 0x4b); +DEFINE_KNOWN_FOLDER(FOLDERID_Libraries, 0x1b3ea5dc, 0xb587, 0x4786, 0xb4, 0xef, 0xbd, 0x1d, 0xc3, 0x32, 0xae, 0xae); +DEFINE_KNOWN_FOLDER(FOLDERID_Links, 0xbfb9d5e0, 0xc6a9, 0x404c, 0xb2, 0xb2, 0xae, 0x6d, 0xb6, 0xaf, 0x49, 0x68); +DEFINE_KNOWN_FOLDER(FOLDERID_LocalAppData, 0xf1b32785, 0x6fba, 0x4fcf, 0x9d, 0x55, 0x7b, 0x8e, 0x7f, 0x15, 0x70, 0x91); +DEFINE_KNOWN_FOLDER(FOLDERID_LocalAppDataLow, 0xa520a1a4, 0x1780, 0x4ff6, 0xbd, 0x18, 0x16, 0x73, 0x43, 0xc5, 0xaf, 0x16); +DEFINE_KNOWN_FOLDER(FOLDERID_LocalizedResourcesDir, 0x2a00375e, 0x224c, 0x49de, 0xb8, 0xd1, 0x44, 0x0d, 0xf7, 0xef, 0x3d, 0xdc); +DEFINE_KNOWN_FOLDER(FOLDERID_Music, 0x4bd8d571, 0x6d19, 0x48d3, 0xbe, 0x97, 0x42, 0x22, 0x20, 0x08, 0x0e, 0x43); +DEFINE_KNOWN_FOLDER(FOLDERID_MusicLibrary, 0x2112ab0a, 0xc86a, 0x4ffe, 0xa3, 0x68, 0x0d, 0xe9, 0x6e, 0x47, 0x01, 0x2e); +DEFINE_KNOWN_FOLDER(FOLDERID_NetHood, 0xc5abbf53, 0xe17f, 0x4121, 0x89, 0x00, 0x86, 0x62, 0x6f, 0xc2, 0xc9, 0x73); +DEFINE_KNOWN_FOLDER(FOLDERID_NetworkFolder, 0xd20beec4, 0x5ca8, 0x4905, 0xae, 0x3b, 0xbf, 0x25, 0x1e, 0xa0, 0x9b, 0x53); +DEFINE_KNOWN_FOLDER(FOLDERID_OriginalImages, 0x2c36c0aa, 0x5812, 0x4b87, 0xbf, 0xd0, 0x4c, 0xd0, 0xdf, 0xb1, 0x9b, 0x39); +DEFINE_KNOWN_FOLDER(FOLDERID_PhotoAlbums, 0x69d2cf90, 0xfc33, 0x4fb7, 0x9a, 0x0c, 0xeb, 0xb0, 0xf0, 0xfc, 0xb4, 0x3c); +DEFINE_KNOWN_FOLDER(FOLDERID_Pictures, 0x33e28130, 0x4e1e, 0x4676, 0x83, 0x5a, 0x98, 0x39, 0x5c, 0x3b, 0xc3, 0xbb); +DEFINE_KNOWN_FOLDER(FOLDERID_PicturesLibrary, 0xa990ae9f, 0xa03b, 0x4e80, 0x94, 0xbc, 0x99, 0x12, 0xd7, 0x50, 0x41, 0x04); +DEFINE_KNOWN_FOLDER(FOLDERID_Playlists, 0xde92c1c7, 0x837f, 0x4f69, 0xa3, 0xbb, 0x86, 0xe6, 0x31, 0x20, 0x4a, 0x23); +DEFINE_KNOWN_FOLDER(FOLDERID_PrintersFolder, 0x76fc4e2d, 0xd6ad, 0x4519, 0xa6, 0x63, 0x37, 0xbd, 0x56, 0x06, 0x81, 0x85); +DEFINE_KNOWN_FOLDER(FOLDERID_PrintHood, 0x9274bd8d, 0xcfd1, 0x41c3, 0xb3, 0x5e, 0xb1, 0x3f, 0x55, 0xa7, 0x58, 0xf4); +DEFINE_KNOWN_FOLDER(FOLDERID_Profile, 0x5e6c858f, 0x0e22, 0x4760, 0x9a, 0xfe, 0xea, 0x33, 0x17, 0xb6, 0x71, 0x73); +DEFINE_KNOWN_FOLDER(FOLDERID_ProgramData, 0x62ab5d82, 0xfdc1, 0x4dc3, 0xa9, 0xdd, 0x07, 0x0d, 0x1d, 0x49, 0x5d, 0x97); +DEFINE_KNOWN_FOLDER(FOLDERID_ProgramFiles, 0x905e63b6, 0xc1bf, 0x494e, 0xb2, 0x9c, 0x65, 0xb7, 0x32, 0xd3, 0xd2, 0x1a); +DEFINE_KNOWN_FOLDER(FOLDERID_ProgramFilesCommon, 0xf7f1ed05, 0x9f6d, 0x47a2, 0xaa, 0xae, 0x29, 0xd3, 0x17, 0xc6, 0xf0, 0x66); +DEFINE_KNOWN_FOLDER(FOLDERID_ProgramFilesCommonX64, 0x6365d5a7, 0x0f0d, 0x45e5, 0x87, 0xf6, 0x0d, 0xa5, 0x6b, 0x6a, 0x4f, 0x7d); +DEFINE_KNOWN_FOLDER(FOLDERID_ProgramFilesCommonX86, 0xde974d24, 0xd9c6, 0x4d3e, 0xbf, 0x91, 0xf4, 0x45, 0x51, 0x20, 0xb9, 0x17); +DEFINE_KNOWN_FOLDER(FOLDERID_ProgramFilesX64, 0x6d809377, 0x6af0, 0x444b, 0x89, 0x57, 0xa3, 0x77, 0x3f, 0x02, 0x20, 0x0e); +DEFINE_KNOWN_FOLDER(FOLDERID_ProgramFilesX86, 0x7c5a40ef, 0xa0fb, 0x4bfc, 0x87, 0x4a, 0xc0, 0xf2, 0xe0, 0xb9, 0xfa, 0x8e); +DEFINE_KNOWN_FOLDER(FOLDERID_Programs, 0xa77f5d77, 0x2e2b, 0x44c3, 0xa6, 0xa2, 0xab, 0xa6, 0x01, 0x05, 0x4a, 0x51); +DEFINE_KNOWN_FOLDER(FOLDERID_Public, 0xdfdf76a2, 0xc82a, 0x4d63, 0x90, 0x6a, 0x56, 0x44, 0xac, 0x45, 0x73, 0x85); +DEFINE_KNOWN_FOLDER(FOLDERID_PublicDesktop, 0xc4aa340d, 0xf20f, 0x4863, 0xaf, 0xef, 0xf8, 0x7e, 0xf2, 0xe6, 0xba, 0x25); +DEFINE_KNOWN_FOLDER(FOLDERID_PublicDocuments, 0xed4824af, 0xdce4, 0x45a8, 0x81, 0xe2, 0xfc, 0x79, 0x65, 0x08, 0x36, 0x34); +DEFINE_KNOWN_FOLDER(FOLDERID_PublicDownloads, 0x3d644c9b, 0x1fb8, 0x4f30, 0x9b, 0x45, 0xf6, 0x70, 0x23, 0x5f, 0x79, 0xc0); +DEFINE_KNOWN_FOLDER(FOLDERID_PublicGameTasks, 0xdebf2536, 0xe1a8, 0x4c59, 0xb6, 0xa2, 0x41, 0x45, 0x86, 0x47, 0x6a, 0xea); +DEFINE_KNOWN_FOLDER(FOLDERID_PublicLibraries, 0x48daf80b, 0xe6cf, 0x4f4e, 0xb8, 0x00, 0x0e, 0x69, 0xd8, 0x4e, 0xe3, 0x84); +DEFINE_KNOWN_FOLDER(FOLDERID_PublicMusic, 0x3214fab5, 0x9757, 0x4298, 0xbb, 0x61, 0x92, 0xa9, 0xde, 0xaa, 0x44, 0xff); +DEFINE_KNOWN_FOLDER(FOLDERID_PublicPictures, 0xb6ebfb86, 0x6907, 0x413c, 0x9a, 0xf7, 0x4f, 0xc2, 0xab, 0xf0, 0x7c, 0xc5); +DEFINE_KNOWN_FOLDER(FOLDERID_PublicRingtones, 0xe555ab60, 0x153b, 0x4d17, 0x9f, 0x04, 0xa5, 0xfe, 0x99, 0xfc, 0x15, 0xec); +DEFINE_KNOWN_FOLDER(FOLDERID_PublicVideos, 0x2400183a, 0x6185, 0x49fb, 0xa2, 0xd8, 0x4a, 0x39, 0x2a, 0x60, 0x2b, 0xa3); +DEFINE_KNOWN_FOLDER(FOLDERID_QuickLaunch, 0x52a4f021, 0x7b75, 0x48a9, 0x9f, 0x6b, 0x4b, 0x87, 0xa2, 0x10, 0xbc, 0x8f); +DEFINE_KNOWN_FOLDER(FOLDERID_Recent, 0xae50c081, 0xebd2, 0x438a, 0x86, 0x55, 0x8a, 0x09, 0x2e, 0x34, 0x98, 0x7a); +DEFINE_KNOWN_FOLDER(FOLDERID_RecordedTV, 0xbd85e001, 0x112e, 0x431e, 0x98, 0x3b, 0x7b, 0x15, 0xac, 0x09, 0xff, 0xf1); +DEFINE_KNOWN_FOLDER(FOLDERID_RecordedTVLibrary, 0x1a6fdba2, 0xf42d, 0x4358, 0xa7, 0x98, 0xb7, 0x4d, 0x74, 0x59, 0x26, 0xc5); +DEFINE_KNOWN_FOLDER(FOLDERID_RecycleBinFolder, 0xb7534046, 0x3ecb, 0x4c18, 0xbe, 0x4e, 0x64, 0xcd, 0x4c, 0xb7, 0xd6, 0xac); +DEFINE_KNOWN_FOLDER(FOLDERID_ResourceDir, 0x8ad10c31, 0x2adb, 0x4296, 0xa8, 0xf7, 0xe4, 0x70, 0x12, 0x32, 0xc9, 0x72); +DEFINE_KNOWN_FOLDER(FOLDERID_Ringtones, 0xc870044b, 0xf49e, 0x4126, 0xa9, 0xc3, 0xb5, 0x2a, 0x1f, 0xf4, 0x11, 0xe8); +DEFINE_KNOWN_FOLDER(FOLDERID_RoamingAppData, 0x3eb685db, 0x65f9, 0x4cf6, 0xa0, 0x3a, 0xe3, 0xef, 0x65, 0x72, 0x9f, 0x3d); +DEFINE_KNOWN_FOLDER(FOLDERID_SampleMusic, 0xb250c668, 0xf57d, 0x4ee1, 0xa6, 0x3c, 0x29, 0x0e, 0xe7, 0xd1, 0xaa, 0x1f); +DEFINE_KNOWN_FOLDER(FOLDERID_SamplePictures, 0xc4900540, 0x2379, 0x4c75, 0x84, 0x4b, 0x64, 0xe6, 0xfa, 0xf8, 0x71, 0x6b); +DEFINE_KNOWN_FOLDER(FOLDERID_SamplePlaylists, 0x15ca69b3, 0x30ee, 0x49c1, 0xac, 0xe1, 0x6b, 0x5e, 0xc3, 0x72, 0xaf, 0xb5); +DEFINE_KNOWN_FOLDER(FOLDERID_SampleVideos, 0x859ead94, 0x2e85, 0x48ad, 0xa7, 0x1a, 0x09, 0x69, 0xcb, 0x56, 0xa6, 0xcd); +DEFINE_KNOWN_FOLDER(FOLDERID_SavedGames, 0x4c5c32ff, 0xbb9d, 0x43b0, 0xb5, 0xb4, 0x2d, 0x72, 0xe5, 0x4e, 0xaa, 0xa4); +DEFINE_KNOWN_FOLDER(FOLDERID_SavedSearches, 0x7d1d3a04, 0xdebb, 0x4115, 0x95, 0xcf, 0x2f, 0x29, 0xda, 0x29, 0x20, 0xda); +DEFINE_KNOWN_FOLDER(FOLDERID_SEARCH_CSC, 0xee32e446, 0x31ca, 0x4aba, 0x81, 0x4f, 0xa5, 0xeb, 0xd2, 0xfd, 0x6d, 0x5e); +DEFINE_KNOWN_FOLDER(FOLDERID_SearchHome, 0x190337d1, 0xb8ca, 0x4121, 0xa6, 0x39, 0x6d, 0x47, 0x2d, 0x16, 0x97, 0x2a); +DEFINE_KNOWN_FOLDER(FOLDERID_SEARCH_MAPI, 0x98ec0e18, 0x2098, 0x4d44, 0x86, 0x44, 0x66, 0x97, 0x93, 0x15, 0xa2, 0x81); +DEFINE_KNOWN_FOLDER(FOLDERID_SendTo, 0x8983036c, 0x27c0, 0x404b, 0x8f, 0x08, 0x10, 0x2d, 0x10, 0xdc, 0xfd, 0x74); +DEFINE_KNOWN_FOLDER(FOLDERID_SidebarDefaultParts, 0x7b396e54, 0x9ec5, 0x4300, 0xbe, 0x0a, 0x24, 0x82, 0xeb, 0xae, 0x1a, 0x26); +DEFINE_KNOWN_FOLDER(FOLDERID_SidebarParts, 0xa75d362e, 0x50fc, 0x4fb7, 0xac, 0x2c, 0xa8, 0xbe, 0xaa, 0x31, 0x44, 0x93); +DEFINE_KNOWN_FOLDER(FOLDERID_StartMenu, 0x625b53c3, 0xab48, 0x4ec1, 0xba, 0x1f, 0xa1, 0xef, 0x41, 0x46, 0xfc, 0x19); +DEFINE_KNOWN_FOLDER(FOLDERID_Startup, 0xb97d20bb, 0xf46a, 0x4c97, 0xba, 0x10, 0x5e, 0x36, 0x08, 0x43, 0x08, 0x54); +DEFINE_KNOWN_FOLDER(FOLDERID_SyncManagerFolder, 0x43668bf8, 0xc14e, 0x49b2, 0x97, 0xc9, 0x74, 0x77, 0x84, 0xd7, 0x84, 0xb7); +DEFINE_KNOWN_FOLDER(FOLDERID_SyncResultsFolder, 0x289a9a43, 0xbe44, 0x4057, 0xa4, 0x1b, 0x58, 0x7a, 0x76, 0xd7, 0xe7, 0xf9); +DEFINE_KNOWN_FOLDER(FOLDERID_SyncSetupFolder, 0x0f214138, 0xb1d3, 0x4a90, 0xbb, 0xa9, 0x27, 0xcb, 0xc0, 0xc5, 0x38, 0x9a); +DEFINE_KNOWN_FOLDER(FOLDERID_System, 0x1ac14e77, 0x02e7, 0x4e5d, 0xb7, 0x44, 0x2e, 0xb1, 0xae, 0x51, 0x98, 0xb7); +DEFINE_KNOWN_FOLDER(FOLDERID_SystemX86, 0xd65231b0, 0xb2f1, 0x4857, 0xa4, 0xce, 0xa8, 0xe7, 0xc6, 0xea, 0x7d, 0x27); +DEFINE_KNOWN_FOLDER(FOLDERID_Templates, 0xa63293e8, 0x664e, 0x48db, 0xa0, 0x79, 0xdf, 0x75, 0x9e, 0x05, 0x09, 0xf7); +DEFINE_KNOWN_FOLDER(FOLDERID_UserPinned, 0x9e3995ab, 0x1f9c, 0x4f13, 0xb8, 0x27, 0x48, 0xb2, 0x4b, 0x6c, 0x71, 0x74); +DEFINE_KNOWN_FOLDER(FOLDERID_UserProfiles, 0x0762d272, 0xc50a, 0x4bb0, 0xa3, 0x82, 0x69, 0x7d, 0xcd, 0x72, 0x9b, 0x80); +DEFINE_KNOWN_FOLDER(FOLDERID_UserProgramFiles, 0x5cd7aee2, 0x2219, 0x4a67, 0xb8, 0x5d, 0x6c, 0x9c, 0xe1, 0x56, 0x60, 0xcb); +DEFINE_KNOWN_FOLDER(FOLDERID_UserProgramFilesCommon, 0xbcbd3057, 0xca5c, 0x4622, 0xb4, 0x2d, 0xbc, 0x56, 0xdb, 0x0a, 0xe5, 0x16); +DEFINE_KNOWN_FOLDER(FOLDERID_UsersFiles, 0xf3ce0f7c, 0x4901, 0x4acc, 0x86, 0x48, 0xd5, 0xd4, 0x4b, 0x04, 0xef, 0x8f); +DEFINE_KNOWN_FOLDER(FOLDERID_UsersLibraries, 0xa302545d, 0xdeff, 0x464b, 0xab, 0xe8, 0x61, 0xc8, 0x64, 0x8d, 0x93, 0x9b); +DEFINE_KNOWN_FOLDER(FOLDERID_Videos, 0x18989b1d, 0x99b5, 0x455b, 0x84, 0x1c, 0xab, 0x7c, 0x74, 0xe4, 0xdd, 0xfc); +DEFINE_KNOWN_FOLDER(FOLDERID_VideosLibrary, 0x491e922f, 0x5643, 0x4af4, 0xa7, 0xeb, 0x4e, 0x7a, 0x13, 0x8d, 0x81, 0x74); +DEFINE_KNOWN_FOLDER(FOLDERID_Windows, 0xf38bf404, 0x1d43, 0x42f2, 0x93, 0x05, 0x67, 0xde, 0x0b, 0x28, 0xfc, 0x23); diff --git a/reactos/include/psdk/objectarray.idl b/reactos/include/psdk/objectarray.idl new file mode 100644 index 00000000000..0112503047d --- /dev/null +++ b/reactos/include/psdk/objectarray.idl @@ -0,0 +1,47 @@ +/* + * Copyright 2011 Jacek Caban for CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "oaidl.idl"; +import "ocidl.idl"; + +[ + uuid(92ca9dcd-5622-4bba-a805-5e9f541bd8c9), + object, + pointer_default(unique) +] +interface IObjectArray : IUnknown +{ + HRESULT GetCount([out] UINT *pcObjects); + HRESULT GetAt( + [in] UINT uiIndex, + [in] REFIID riid, + [out, iid_is(riid)] void **ppv); +} + +[ + uuid(5632b1a4-e38a-400a-928a-d4cd63230295), + object, + pointer_default(unique) +] +interface IObjectCollection : IObjectArray +{ + HRESULT AddObject([in] IUnknown *punk); + HRESULT AddFromArray([in] IObjectArray *poaSource); + HRESULT RemoveObjectAt([in] UINT uiIndex); + HRESULT Clear(); +} diff --git a/reactos/include/psdk/propsys.idl b/reactos/include/psdk/propsys.idl index ef9ecfc912a..993686de1bb 100644 --- a/reactos/include/psdk/propsys.idl +++ b/reactos/include/psdk/propsys.idl @@ -802,6 +802,7 @@ cpp_quote("#define PKEYSTR_MAX (GUIDSTRING_MAX + 1 + PKEY_PIDSTR_MAX)") cpp_quote("HRESULT WINAPI PSStringFromPropertyKey(REFPROPERTYKEY,LPWSTR,UINT);") cpp_quote("HRESULT WINAPI PSPropertyKeyFromString(LPCWSTR,PROPERTYKEY*);") cpp_quote("HRESULT WINAPI PSGetPropertyDescription(REFPROPERTYKEY,REFIID,void **);") +cpp_quote("HRESULT WINAPI PSRefreshPropertySchema(void);") /* TODO: Add remainder of the C api here */ diff --git a/reactos/include/psdk/psdk.rbuild b/reactos/include/psdk/psdk.rbuild index fa5f59fd909..effe470e7db 100644 --- a/reactos/include/psdk/psdk.rbuild +++ b/reactos/include/psdk/psdk.rbuild @@ -38,6 +38,7 @@ netfw.idl netcon.idl oaidl.idl + objectarray.idl objidl.idl objsafe.idl ocidl.idl diff --git a/reactos/include/psdk/shldisp.idl b/reactos/include/psdk/shldisp.idl index 07c3059221c..8df56cdf1a6 100644 --- a/reactos/include/psdk/shldisp.idl +++ b/reactos/include/psdk/shldisp.idl @@ -31,6 +31,7 @@ import "comcat.idl"; * IAutoComplete interface */ [ + local, object, uuid(00bb2762-6a77-11d0-a535-00c04fd7d062), pointer_default(unique) @@ -51,6 +52,7 @@ interface IAutoComplete : IUnknown * IAutoComplete2 interface */ [ + local, object, uuid(eac04bc0-3791-11d2-bb95-0060977b464c), pointer_default(unique) @@ -76,8 +78,18 @@ interface IAutoComplete2 : IAutoComplete HRESULT GetOptions( [out] DWORD *pdwFlag); } +[ + uuid(50a7e9b0-70ef-11d1-b75a-00a0c90564fe), + version(1.0) +] +library Shell32 +{ + +importlib("stdole2.tlb"); + [ object, + oleautomation, uuid(9ba05970-f6a8-11cf-a442-00a0c90a8f39), pointer_default(unique) ] @@ -119,6 +131,363 @@ coclass ShellFolderViewOC [default, source] dispinterface DShellFolderViewEvents; } +interface FolderItem; +interface FolderItems; +interface FolderItemVerb; +interface FolderItemVerbs; + +/***************************************************************************** + * Folder interface + */ +[ + object, + uuid(bbcbde60-c3ff-11ce-8350-444553540000), + oleautomation, + dual +] +interface Folder : IDispatch +{ + [propget, id(DISPID_VALUE)] + HRESULT Title( [out, retval] BSTR *pbs ); + + [propget] + HRESULT Application( [out, retval] IDispatch **ppid ); + + [propget] + HRESULT Parent( [out, retval] IDispatch **ppid ); + + [propget] + HRESULT ParentFolder( [out, retval] Folder **ppsf ); + + HRESULT Items( [out, retval] FolderItems **ppid ); + + HRESULT ParseName( [in] BSTR bName, [out, retval] FolderItem **ppid ); + + HRESULT NewFolder( [in] BSTR bName, [in, optional] VARIANT vOptions ); + + HRESULT MoveHere( [in] VARIANT vItem, [in, optional] VARIANT vOptions ); + + HRESULT CopyHere( [in] VARIANT vItem, [in, optional] VARIANT vOptions ); + + HRESULT GetDetailsOf( [in] VARIANT vItem, + [in] int iColumn, + [out, retval] BSTR *pbs ); +} + +/***************************************************************************** + * Folder2 interface + */ +[ + object, + uuid(f0d2d8ef-3890-11d2-bf8b-00c04fb93661), + oleautomation, + dual +] +interface Folder2 : Folder +{ + [propget] + HRESULT Self( [out, retval] FolderItem **ppfi ); + + [propget] + HRESULT OfflineStatus( [out, retval] LONG *pul ); + + HRESULT Synchronize(); + + [propget, id(1)] + HRESULT HaveToShowWebViewBarricade( + [out, retval] VARIANT_BOOL *pbHaveToShowWebViewBarricade ); + + HRESULT DismissedWebViewBarricade(); +} + +/***************************************************************************** + * Folder3 interface + */ +[ + object, + uuid(a7ae5f64-c4d7-4d7f-9307-4d24ee54b841), + oleautomation, + dual +] +interface Folder3 : Folder2 +{ + [propget, id(2)] + HRESULT ShowWebViewBarricade( + [out, retval] VARIANT_BOOL *pbShowWebViewBarricade ); + + [propput, id(2)] + HRESULT ShowWebViewBarricade( [in] VARIANT_BOOL bShowWebViewBarricade ); +} + +/***************************************************************************** + * FolderItem interface + */ +[ + object, + uuid(fac32c80-cbe4-11ce-8350-444553540000), + oleautomation, + dual +] +interface FolderItem : IDispatch +{ + typedef FolderItem *LPFOLDERITEM; + + [propget] + HRESULT Application( [out, retval] IDispatch **ppid ); + + [propget] + HRESULT Parent( [out, retval] IDispatch **ppid ); + + [propget, id(DISPID_VALUE)] + HRESULT Name( [out, retval] BSTR *pbs ); + + [propput, id(DISPID_VALUE)] + HRESULT Name( [in] BSTR bs ); + + [propget] + HRESULT Path( [out, retval] BSTR *pbs ); + + [propget] + HRESULT GetLink( [out, retval] IDispatch **ppid ); + + [propget] + HRESULT GetFolder( [out, retval] IDispatch **ppid ); + + [propget] + HRESULT IsLink( [out, retval] VARIANT_BOOL *pb ); + + [propget] + HRESULT IsFolder( [out, retval] VARIANT_BOOL *pb ); + + [propget] + HRESULT IsFileSystem( [out, retval] VARIANT_BOOL *pb ); + + [propget] + HRESULT IsBrowsable( [out, retval] VARIANT_BOOL *pb ); + + [propget] + HRESULT ModifyDate( [out, retval] DATE *pdt ); + + [propput] + HRESULT ModifyDate( [in] DATE dt ); + + [propget] + HRESULT Size( [out, retval] LONG *pul ); + + [propget] + HRESULT Type( [out, retval] BSTR *pbs ); + + HRESULT Verbs( [out, retval] FolderItemVerbs **ppfic ); + + HRESULT InvokeVerb( [in, optional] VARIANT vVerb ); +} + +/***************************************************************************** + * FolderItems interface + */ +[ + object, + uuid(744129e0-cbe5-11ce-8350-444553540000), + oleautomation, + dual +] +interface FolderItems : IDispatch +{ + [propget] + HRESULT Count( [out, retval] long *plCount ); + + [propget] + HRESULT Application( [out, retval] IDispatch **ppid ); + + [propget] + HRESULT Parent( [out, retval] IDispatch **ppid ); + + HRESULT Item( [in, optional] VARIANT index, + [out, retval] FolderItem **ppid ); + + [id(DISPID_NEWENUM)] + HRESULT _NewEnum( [out, retval] IUnknown **ppunk ); +} + +/***************************************************************************** + * FolderItemVerb interface + */ +[ + object, + uuid(08ec3e00-50b0-11cf-960c-0080c7f4ee85), + oleautomation, + dual +] +interface FolderItemVerb : IDispatch +{ + [propget] + HRESULT Application( [out, retval] IDispatch **ppid ); + + [propget] + HRESULT Parent( [out, retval] IDispatch **ppid ); + + [propget, id(DISPID_VALUE)] + HRESULT Name( [out, retval] BSTR *pbs ); + + HRESULT DoIt(); +} + +/***************************************************************************** + * FolderItemVerbs interface + */ +[ + object, + uuid(1f8352c0-50b0-11cf-960c-0080c7f4ee85), + oleautomation, + dual +] +interface FolderItemVerbs : IDispatch +{ + [propget] + HRESULT Count( [out, retval] long *plCount ); + + [propget] + HRESULT Application( [out, retval] IDispatch **ppid ); + + [propget] + HRESULT Parent( [out, retval] IDispatch **ppid ); + + HRESULT Item( [in, optional] VARIANT index, + [out, retval] FolderItemVerb **ppid ); + + [id(DISPID_NEWENUM)] + HRESULT _NewEnum( [out, retval] IUnknown **ppunk ); +} + +/***************************************************************************** + * IShellDispatch interface + */ +[ + object, + uuid(d8f015c0-c278-11ce-a49e-444553540000), + oleautomation, + hidden, + dual +] +interface IShellDispatch : IDispatch +{ + [propget] + HRESULT Application( [out, retval] IDispatch **ppid ); + + [propget] + HRESULT Parent( [out, retval] IDispatch **ppid ); + + HRESULT NameSpace( [in] VARIANT vDir, [out, retval] Folder **ppsdf ); + + HRESULT BrowseForFolder( [in] long Hwnd, + [in] BSTR Title, + [in] long Options, + [in, optional] VARIANT RootFolder, + [out, retval] Folder **ppsdf ); + + HRESULT Windows( [out, retval] IDispatch **ppid ); + + HRESULT Open( [in] VARIANT vDir ); + + HRESULT Explore( [in] VARIANT vDir ); + + HRESULT MinimizeAll(); + + HRESULT UndoMinimizeALL(); + + HRESULT FileRun(); + + HRESULT CascadeWindows(); + + HRESULT TileVertically(); + + HRESULT TileHorizontally(); + + HRESULT ShutdownWindows(); + + HRESULT Suspend(); + + HRESULT EjectPC(); + + HRESULT SetTime(); + + HRESULT TrayProperties(); + + HRESULT Help(); + + HRESULT FindFiles(); + + HRESULT FindComputer(); + + HRESULT RefreshMenu(); + + HRESULT ControlPanelItem( [in] BSTR szDir ); +} + +[ + uuid(13709620-c279-11ce-a49e-444553540000) +] +coclass Shell +{ + [default] interface IShellDispatch; +} + +[ + uuid(0a89a860-d7b1-11ce-8350-444553540000), + hidden +] +coclass ShellDispatchInproc +{ + interface IUnknown; +} + +typedef +[ + uuid(ca31ea20-48d0-11cf-8350-444553540000) +] +enum ShellSpecialFolderConstants { + ssfDESKTOP = 0x00, + ssfPROGRAMS = 0x02, + ssfCONTROLS = 0x03, + ssfPRINTERS = 0x04, + ssfPERSONAL = 0x05, + ssfFAVORITES = 0x06, + ssfSTARTUP = 0x07, + ssfRECENT = 0x08, + ssfSENDTO = 0x09, + ssfBITBUCKET = 0x0a, + ssfSTARTMENU = 0x0b, + ssfDESKTOPDIRECTORY = 0x10, + ssfDRIVES = 0x11, + ssfNETWORK = 0x12, + ssfNETHOOD = 0x13, + ssfFONTS = 0x14, + ssfTEMPLATES = 0x15, + ssfCOMMONSTARTMENU = 0x16, + ssfCOMMONPROGRAMS = 0x17, + ssfCOMMONSTARTUP = 0x18, + ssfCOMMONDESKTOPDIR = 0x19, + ssfAPPDATA = 0x1a, + ssfPRINTHOOD = 0x1b, + ssfLOCALAPPDATA = 0x1c, + ssfALTSTARTUP = 0x1d, + ssfCOMMONALTSTARTUP = 0x1e, + ssfCOMMONFAVORITES = 0x1f, + ssfINTERNETCACHE = 0x20, + ssfCOOKIES = 0x21, + ssfHISTORY = 0x22, + ssfCOMMONAPPDATA = 0x23, + ssfWINDOWS = 0x24, + ssfSYSTEM = 0x25, + ssfPROGRAMFILES = 0x26, + ssfMYPICTURES = 0x27, + ssfPROFILE = 0x28, + ssfSYSTEMx86 = 0x29, + ssfPROGRAMFILESx86 = 0x30 +} ShellSpecialFolderConstants; + +} /* library Shell32 */ + /***************************************************************************** * IAsyncOperation interface */ diff --git a/reactos/include/psdk/shlguid.h b/reactos/include/psdk/shlguid.h index 5f50fba422f..f81f604eee5 100644 --- a/reactos/include/psdk/shlguid.h +++ b/reactos/include/psdk/shlguid.h @@ -20,7 +20,6 @@ #define __WINE_SHLGUID_H DEFINE_OLEGUID(CLSID_ShellDesktop, 0x00021400L, 0, 0); -DEFINE_OLEGUID(CLSID_ShellLink, 0x00021401L, 0, 0); DEFINE_OLEGUID(CATID_BrowsableShellExt, 0x00021490L, 0, 0); DEFINE_OLEGUID(CATID_BrowseInPlace, 0x00021491L, 0, 0); @@ -184,8 +183,6 @@ DEFINE_GUID(IID_IDeskBarClient, 0xEB0FE175, 0x1A3A, 0x11D0, 0x89, 0xB3, /* END REACTOS ONLY */ /* IExplorerBrowser */ -DEFINE_GUID(CLSID_ExplorerBrowser, 0x71F96385, 0xDDD6, 0x48D3, 0xA0, 0xC1, 0xAE, 0x06, 0xE8, 0xB0, 0x55, 0xFB); - DEFINE_GUID(EP_NavPane, 0xCB316B22, 0x25F7, 0x42B8, 0x8A, 0x09, 0x54, 0x0D, 0x23, 0xA4, 0x3C, 0x2F); DEFINE_GUID(EP_Commands,0xD9745868, 0xCA5F, 0x4A76, 0x91, 0xCD, 0xF5, 0xA1, 0x29, 0xFB, 0xB0, 0x76); DEFINE_GUID(EP_Commands_Organize, 0x72E81700, 0xE3EC, 0x4660, 0xBF, 0x24, 0x3C, 0x3B, 0x7B, 0x64, 0x88, 0x06); @@ -195,4 +192,21 @@ DEFINE_GUID(EP_PreviewPane, 0x893C63D1, 0x45C8, 0x4D17, 0xBE, 0x19, 0x22, 0x3B, DEFINE_GUID(EP_QueryPane, 0x65BCDE4F, 0x4F07, 0x4F27, 0x83, 0xA7, 0x1A, 0xFC, 0xA4, 0xDF, 0x7D, 0xDD); DEFINE_GUID(EP_AdvQueryPane, 0xB4E9DB8B, 0x34BA, 0x4C39, 0xB5, 0xCC, 0x16, 0xA1, 0xBD, 0x2C, 0x41, 0x1C); +/* IShellItem/IShellItemArray BindToHandler */ +DEFINE_GUID(BHID_SFObject, 0x3981E224, 0xF559, 0x11D3, 0x8E,0x3A, 0x00,0xC0,0x4F,0x68,0x37,0xD5); +DEFINE_GUID(BHID_SFUIObject, 0x3981E225, 0xF559, 0x11D3, 0x8E,0x3A, 0x00,0xC0,0x4F,0x68,0x37,0xD5); +DEFINE_GUID(BHID_SFViewObject,0x3981E226, 0xF559, 0x11D3, 0x8E,0x3A, 0x00,0xC0,0x4F,0x68,0x37,0xD5); +DEFINE_GUID(BHID_Storage, 0x3981E227, 0xF559, 0x11D3, 0x8E,0x3A, 0x00,0xC0,0x4F,0x68,0x37,0xD5); +DEFINE_GUID(BHID_Stream, 0x1CEBB3AB, 0x7C10, 0x499A, 0xA4,0x17, 0x92,0xCA,0x16,0xC4,0xCB,0x83); +DEFINE_GUID(BHID_StorageEnum, 0x4621A4E3, 0xF0D6, 0x4773, 0x8A,0x9C, 0x46,0xE7,0x7B,0x17,0x48,0x40); +DEFINE_GUID(BHID_Transfer, 0xD5E346A1, 0xF753, 0x4932, 0xB4,0x03, 0x45,0x74,0x80,0x0E,0x24,0x98); +DEFINE_GUID(BHID_EnumItems, 0x94F60519, 0x2850, 0x4924, 0xAA,0x5A, 0xD1,0x5E,0x84,0x86,0x80,0x39); +DEFINE_GUID(BHID_DataObject, 0xB8C0BD9F, 0xED24, 0x455C, 0x83,0xE6, 0xD5,0x39,0x0C,0x4F,0xE8,0xC4); +DEFINE_GUID(BHID_Filter, 0x38D08778, 0xF557, 0x4690, 0x9E,0xBF, 0xBA,0x54,0x70,0x6A,0xD8,0xF7); +DEFINE_GUID(BHID_LinkTargetItem, 0x3981E228, 0xF559, 0x11D3, 0x8E,0x3A, 0x00,0xC0,0x4F,0x68,0x37,0xD5); +DEFINE_GUID(BHID_PropertyStore, 0x0384E1A4, 0x1523, 0x439C, 0xA4,0xC8, 0xAB,0x91,0x10,0x52,0xF5,0x86); +DEFINE_GUID(BHID_ThumbnailHandler, 0x7B2E650A, 0x8E20, 0x4F4A, 0xB0,0x9E, 0x65,0x97,0xAF,0xC7,0x2F,0xB0); +DEFINE_GUID(BHID_AssociationArray, 0xBEA9EF17, 0x82F1, 0x4F60, 0x92,0x84, 0x4F,0x8D,0xB7,0x5C,0x3B,0xE9); +DEFINE_GUID(BHID_EnumAssocHandlers,0xB8AB0B9C, 0xC2EC, 0x4F7A, 0x91,0x8D, 0x31,0x49,0x00,0xE6,0x28,0x0A); + #endif /* __WINE_SHLGUID_H */ diff --git a/reactos/include/psdk/shobjidl.idl b/reactos/include/psdk/shobjidl.idl index a12004e2794..05b77cf4826 100644 --- a/reactos/include/psdk/shobjidl.idl +++ b/reactos/include/psdk/shobjidl.idl @@ -30,7 +30,8 @@ import "propidl.idl"; /* FIXME: import "prsht.idl";*/ import "msxml.idl"; import "wtypes.idl"; -/* FIXME: import "propsys.idl"; */ +import "propsys.idl"; +import "objectarray.idl"; /* FIXME: import "structuredquery.idl"; */ cpp_quote("/* FIXME: #include */") @@ -346,8 +347,25 @@ interface IShellFolder2 : IShellFolder ] interface IShellItem : IUnknown { - typedef DWORD SIGDN; + typedef [v1_enum] enum { + SIGDN_NORMALDISPLAY = 0, + SIGDN_PARENTRELATIVEPARSING = 0x80018001, + SIGDN_DESKTOPABSOLUTEPARSING = 0x80028000, + SIGDN_PARENTRELATIVEEDITING = 0x80031001, + SIGDN_DESKTOPABSOLUTEEDITING = 0x8004c000, + SIGDN_FILESYSPATH = 0x80058000, + SIGDN_URL = 0x80068000, + SIGDN_PARENTRELATIVEFORADDRESSBAR = 0x8007c001, + SIGDN_PARENTRELATIVE = 0x80080001 + } SIGDN; /* & 0xFFFF => SHGDN */ + [v1_enum] enum _SICHINTF + { + SICHINT_DISPLAY = 0x00000000, + SICHINT_CANONICAL = 0x10000000, + SICHINT_TEST_FILESYSPATH_IF_NOT_EQUAL = 0x20000000, + SICHINT_ALLFIELDS = 0x80000000 + }; typedef DWORD SICHINTF; HRESULT BindToHandler( @@ -372,6 +390,75 @@ interface IShellItem : IUnknown [out] int *piOrder); } +/***************************************************************************** + * IShellItem2 interface + */ +[ + object, + uuid(7E9FB0D3-919F-4307-AB2E-9B1860310C93), + pointer_default(unique) +] +interface IShellItem2 : IShellItem +{ + HRESULT GetPropertyStore( + [in] GETPROPERTYSTOREFLAGS flags, + [in] REFIID riid, + [out, iid_is(riid)] void **ppv); + + HRESULT GetPropertyStoreWithCreateObject( + [in] GETPROPERTYSTOREFLAGS flags, + [in] IUnknown *punkCreateObject, + [in] REFIID riid, + [out, iid_is(riid)] void **ppv); + + HRESULT GetPropertyStoreForKeys( + [in, size_is(cKeys)] const PROPERTYKEY *rgKeys, + [in] UINT cKeys, + [in] GETPROPERTYSTOREFLAGS flags, + [in] REFIID riid, + [out, iid_is(riid)] void **ppv); + + HRESULT GetPropertyDescriptionList( + [in] REFPROPERTYKEY keyType, + [in] REFIID riid, + [out, iid_is(riid)] void **ppv); + + HRESULT Update( + [in, unique] IBindCtx *pbc); + + HRESULT GetProperty( + [in] REFPROPERTYKEY key, + [out] PROPVARIANT *ppropvar); + + HRESULT GetCLSID( + [in] REFPROPERTYKEY key, + [out] CLSID *pclsid); + + HRESULT GetFileTime ( + [in] REFPROPERTYKEY key, + [out] FILETIME *pft); + + HRESULT GetInt32( + [in] REFPROPERTYKEY key, + [out] int *pi); + + HRESULT GetString( + [in] REFPROPERTYKEY key, + [out, string] LPWSTR *ppsz); + + HRESULT GetUInt32( + [in] REFPROPERTYKEY key, + [out] ULONG *pui); + + HRESULT GetUInt64( + [in] REFPROPERTYKEY key, + [out] ULONGLONG *pull); + + HRESULT GetBool( + [in] REFPROPERTYKEY key, + [out] BOOL *pf); +} + typedef enum tagNWMF { NWMF_UNLOADING = 0x0001, NWMF_USERINITED = 0x0002, @@ -403,6 +490,125 @@ interface INewWindowManager : IUnknown cpp_quote("#define SID_SNewWindowManager IID_INewWindowManager") +/***************************************************************************** + * IEnumShellItems interface + */ +[ + object, + uuid(70629033-E363-4A28-A567-0DB78006E6D7), + pointer_default(unique) +] +interface IEnumShellItems : IUnknown +{ + [local] HRESULT Next( + [in] ULONG celt, + [out, size_is(celt), length_is(*pceltFetched)] IShellItem **rgelt, + [out] ULONG *pceltFetched); + + [call_as(Next)] HRESULT RemoteNext( + [in] ULONG celt, + [out, size_is(celt), length_is(*pceltFetched)] IShellItem **rgelt, + [out] ULONG *pceltFetched); + + HRESULT Skip( + [in] ULONG celt); + + HRESULT Reset(); + + HRESULT Clone( + [out] IEnumShellItems **ppenum); +} + +/***************************************************************************** + * IShellItemArray interface + */ +[ + object, + uuid(B63EA76D-1F85-456F-A19C-48159EFA858B), + pointer_default(unique) +] +interface IShellItemArray : IUnknown +{ + typedef [v1_enum] enum SIATTRIBFLAGS { + SIATTRIBFLAGS_AND = 0x0001, + SIATTRIBFLAGS_OR = 0x0002, + SIATTRIBFLAGS_APPCOMPAT = 0x0003, + SIATTRIBFLAGS_MASK = 0x0003, + SIATTRIBFLAGS_ALLITEMS = 0x4000 + } SIATTRIBFLAGS; + cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(SIATTRIBFLAGS)") + + HRESULT BindToHandler( + [in, unique] IBindCtx *pbc, + [in] REFGUID bhid, + [in] REFIID riid, + [out, iid_is(riid)] void **ppvOut); + + HRESULT GetPropertyStore( + [in] GETPROPERTYSTOREFLAGS flags, + [in] REFIID riid, + [out, iid_is(riid)] void **ppv); + + HRESULT GetPropertyDescriptionList( + [in] REFPROPERTYKEY keyType, + [in] REFIID riid, + [out, iid_is(riid)] void **ppv); + + HRESULT GetAttributes( + [in] SIATTRIBFLAGS AttribFlags, + [in] SFGAOF sfgaoMask, + [out] SFGAOF *psfgaoAttribs); + + HRESULT GetCount( + [out] DWORD *pdwNumItems); + + HRESULT GetItemAt( + [in] DWORD dwIndex, + [out] IShellItem **ppsi); + + HRESULT EnumItems( + [out] IEnumShellItems **ppenumShellItems); + +} + +typedef [v1_enum] enum DATAOBJ_GET_ITEM_FLAGS +{ + DOGIF_DEFAULT = 0x0, + DOGIF_TRAVERSE_LINK = 0x1, + DOGIF_NO_HDROP = 0x2, + DOGIF_NO_URL = 0x4, + DOGIF_ONLY_IF_ONE = 0x8 +} DATAOBJ_GET_ITEM_FLAGS; +cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(DATAOBJ_GET_ITEM_FLAGS)") + +cpp_quote("HRESULT WINAPI SHGetNameFromIDList(PCIDLIST_ABSOLUTE pidl, SIGDN sigdnName, PWSTR *ppszName);") +cpp_quote("HRESULT WINAPI SHCreateItemFromParsingName(PCWSTR pszPath, IBindCtx *pbc, REFIID riid, void **ppv);") +cpp_quote("HRESULT WINAPI SHCreateItemFromIDList(PCIDLIST_ABSOLUTE pidl, REFIID riid, void **ppv);") +cpp_quote("HRESULT WINAPI SHGetItemFromDataObject(IDataObject *pdtobj, DATAOBJ_GET_ITEM_FLAGS dwFlags, REFIID riid, void **ppv);") +cpp_quote("HRESULT WINAPI SHGetIDListFromObject(IUnknown *punk, PIDLIST_ABSOLUTE *ppidl);") +cpp_quote("HRESULT WINAPI SHGetItemFromObject(IUnknown *punk, REFIID riid, void **ppv);") +cpp_quote("HRESULT WINAPI SHCreateShellItemArray(PCIDLIST_ABSOLUTE pidlParent, IShellFolder* psf, UINT cidl, PCUITEMID_CHILD_ARRAY ppidl, IShellItemArray **ppsiItemArray);") +cpp_quote("HRESULT WINAPI SHCreateShellItemArrayFromShellItem(IShellItem *psi, REFIID riid, void **ppv);") +cpp_quote("HRESULT WINAPI SHCreateShellItemArrayFromDataObject(IDataObject *pdo, REFIID riid, void **ppv);") + +/***************************************************************************** + * IShellItemFilter interface + */ +[ + object, + uuid(2659B475-EEB8-48B7-8F07-B378810F48CF), + pointer_default(unique) +] +interface IShellItemFilter : IUnknown +{ + HRESULT IncludeItem( + [in] IShellItem *psi); + + HRESULT GetEnumFlagsForItem( + [in] IShellItem *psi, + [out] SHCONTF *pgrfFlags); +} + /***************************************************************************** * FOLDERSETTINGS */ @@ -1103,6 +1309,27 @@ interface ICommDlgBrowser3 : ICommDlgBrowser2 [in] IShellView *ppshv); } +/***************************************************************************** + * IDockingWindow interface + */ +[ + object, + uuid(012dd920-7b26-11d0-8ca9-00a0c92dbfe8) +] +interface IDockingWindow : IOleWindow +{ + HRESULT ShowDW( + [in] BOOL fShow); + + HRESULT CloseDW( + [in] DWORD dwReserved); + + HRESULT ResizeBorderDW( + [in] LPCRECT prcBorder, + [in] IUnknown *punkToolbarSite, + [in] BOOL fReserved); +}; + /***************************************************************************** * IDockingWindowFrame interface @@ -1259,6 +1486,7 @@ cpp_quote("#define CMIC_MASK_HASLINKNAME SEE_MASK_HASLINKNAME") cpp_quote("#define CMIC_MASK_FLAG_SEP_VDM SEE_MASK_FLAG_SEPVDM") cpp_quote("#define CMIC_MASK_HASTITLE SEE_MASK_HASTITLE") cpp_quote("#define CMIC_MASK_ASYNCOK SEE_MASK_ASYNCOK") +cpp_quote("#define CMIC_MASK_NOASYNC SEE_MASK_NOASYNC") cpp_quote("#define CMIC_MASK_SHIFT_DOWN 0x10000000") cpp_quote("#define CMIC_MASK_PTINVOKE 0x20000000") cpp_quote("#define CMIC_MASK_CONTROL_DOWN 0x40000000") @@ -1357,6 +1585,26 @@ interface IContextMenu3 : IContextMenu2 [out] LRESULT *plResult); } +/***************************************************************************** + * IContextMenuCB interface + */ + +[ + object, + uuid(3409e930-5a39-11d1-83fa-00a0c90dc849), + pointer_default(unique), + local +] +interface IContextMenuCB : IUnknown +{ + HRESULT CallBack( + [in] IShellFolder *psf, + [in] HWND hwndOwner, + [in] IDataObject *pdtobj, + [in] UINT uMsg, + [in] WPARAM wParam, + [in] LPARAM lParam); +} /***************************************************************************** * IShellExecuteHookA interface @@ -1439,7 +1687,7 @@ interface IResolveShellLink : IUnknown object, uuid(ac60f6a0-0fd9-11d0-99cb-00c04fd64497), pointer_default(unique), - local + local ] interface IURLSearchHook : IUnknown { @@ -1476,7 +1724,7 @@ interface ISearchContext : IUnknown object, uuid(5ee44da4-6d32-46e3-86bc-07540dedd0e0), pointer_default(unique), - local + local ] interface IURLSearchHook2 : IURLSearchHook { @@ -1496,7 +1744,7 @@ cpp_quote("#define INewShortcutHook WINELIB_NAME_AW(INewShortcutHook)") object, uuid(000214e1-0000-0000-c000-000000000046), pointer_default(unique), - local + local ] interface INewShortcutHookA : IUnknown { @@ -1527,7 +1775,7 @@ interface INewShortcutHookA : IUnknown object, uuid(000214f7-0000-0000-c000-000000000046), pointer_default(unique), - local + local ] interface INewShortcutHookW : IUnknown { @@ -1627,28 +1875,6 @@ interface ITaskbarList : IUnknown [in] HWND hwnd); } -cpp_quote("EXTERN_C const CLSID CLSID_TaskbarList;") - -/***************************************************************************** - * IContextMenuCB interface - */ - -[ - object, - uuid(3409e930-5a39-11d1-83fa-00a0c90dc849), - pointer_default(unique) -] -interface IContextMenuCB : IUnknown -{ - HRESULT CallBack( - [in] IShellFolder *psf, - [in] HWND hwndOwner, - [in] IDataObject *pdtobj, - [in] UINT uMsg, - [in] WPARAM wParam, - [in] LPARAM lParam); -} - /***************************************************************************** * IDefaultExtractIconInit interface */ @@ -1679,27 +1905,6 @@ interface IDefaultExtractIconInit : IUnknown [in] int iIcon); } - -/***************************************************************************** - * IDockingWindow interface - */ -[ - uuid(012dd920-7b26-11d0-8ca9-00a0c92dbfe8), - object -] -interface IDockingWindow : IOleWindow -{ - HRESULT ShowDW([in] BOOL fShow); - - HRESULT CloseDW([in] DWORD dwReserved); - - HRESULT ResizeBorderDW( - [in] LPCRECT prcBorder, - [in] IUnknown* punkToolbarSite, - [in] BOOL fReserved); -} - - /***************************************************************************** * IDeskBand interface */ @@ -2817,6 +3022,145 @@ interface ITrackShellMenu : IShellMenu cpp_quote("#endif /* _WIN32_IE_IE60 */") +cpp_quote("#ifdef MIDL_PASS") +typedef IUnknown* HIMAGELIST; +cpp_quote("#endif") + +typedef [v1_enum] enum THUMBBUTTONFLAGS { + THBF_ENABLED = 0x0000, + THBF_DISABLED = 0x0001, + THBF_DISMISSONCLICK = 0x0002, + THBF_NOBACKGROUND = 0x0004, + THBF_HIDDEN = 0x0008, + THBF_NONINTERACTIVE = 0x0010 +} THUMBBUTTONFLAGS; + +cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(THUMBBUTTONFLAGS)") + +typedef [v1_enum] enum THUMBBUTTONMASK { + THB_BITMAP = 0x0001, + THB_ICON = 0x0002, + THB_TOOLTIP = 0x0004, + THB_FLAGS = 0x0008 +} THUMBBUTTONMASK; + +cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(THUMBBUTTONMASK)") + +cpp_quote("#include ") +typedef struct THUMBBUTTON { + THUMBBUTTONMASK dwMask; + UINT iId; + UINT iBitmap; + HICON hIcon; + WCHAR szTip[260]; + THUMBBUTTONFLAGS dwFlags; +} THUMBBUTTON, *LPTHUMBBUTTON; +cpp_quote("#include ") + +/***************************************************************************** + * ITaskbarList2 interface + */ +[ + object, + uuid(602D4995-B13A-429B-A66E-1935E44F4317), + pointer_default(unique) +] +interface ITaskbarList2 : ITaskbarList +{ + HRESULT MarkFullscreenWindow( + [in] HWND hwnd, + [in] BOOL fullscreen); +} + +[ + uuid(ea1afb91-9e28-4b86-90e9-9e9f8a5eefaf), + object +] +interface ITaskbarList3 : ITaskbarList2 +{ + typedef [v1_enum] enum TBPFLAG { + TBPF_NOPROGRESS = 0x0000, + TBPF_INDETERMINATE = 0x0001, + TBPF_NORMAL = 0x0002, + TBPF_ERROR = 0x0004, + TBPF_PAUSED = 0x0008 + } TBPFLAG; + + cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(TBPFLAG)") + + HRESULT SetProgressValue( + [in] HWND hwnd, + [in] ULONGLONG ullCompleted, + [in] ULONGLONG ullTotal); + + HRESULT SetProgressState( + [in] HWND hwnd, + [in] TBPFLAG tbpFlags); + + HRESULT RegisterTab( + [in] HWND hwndTab, + [in] HWND hwndMDI); + + HRESULT UnregisterTab([in] HWND hwndTab); + + HRESULT SetTabOrder( + [in] HWND hwndTab, + [in] HWND hwndInsertBefore); + + HRESULT SetTabActive( + [in] HWND hwndTab, + [in] HWND hwndMDI, + [in] DWORD dwReserved); + + HRESULT ThumbBarAddButtons( + [in] HWND hwnd, + [in] UINT cButtons, + [in, size_is(cButtons)] LPTHUMBBUTTON pButton); + + HRESULT ThumbBarUpdateButtons( + [in] HWND hwnd, + [in] UINT cButtons, + [in, size_is(cButtons)] LPTHUMBBUTTON pButton); + + HRESULT ThumbBarSetImageList( + [in] HWND hwnd, + [in] HIMAGELIST himl); + + HRESULT SetOverlayIcon( + [in] HWND hwnd, + [in] HICON hIcon, + [in, unique, string] LPCWSTR pszDescription); + + HRESULT SetThumbnailTooltip( + [in] HWND hwnd, + [in, unique, string] LPCWSTR pszTip); + + HRESULT SetThumbnailClip( + [in] HWND hwnd, + [in] RECT *prcClip); +} + +[ + uuid(c43dc798-95d1-4bea-9030-bb99e2983a1a), + object +] +interface ITaskbarList4 : ITaskbarList3 +{ + typedef [v1_enum] enum STPFLAG { + STPF_NONE = 0x0000, + STPF_USEAPPTHUMBNAILALWAYS = 0x0001, + STPF_USEAPPTHUMBNAILWHENACTIVE = 0x0002, + STPF_USEAPPPEEKALWAYS = 0x0004, + STPF_USEAPPPEEKWHENACTIVE = 0x0008 + } STPFLAG; + + cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(STPFLAG)") + + HRESULT SetTabProperties( + [in] HWND hwndTab, + [in] STPFLAG stpFlags); +} + /***************************************************************************** * IAutoCompleteDropDown interface */ @@ -2964,5 +3308,974 @@ interface IExplorerBrowser : IUnknown HRESULT GetCurrentView( [in] REFIID riid, - [out, iid_is(riid)] IUnknown **ppv); + [out, iid_is(riid)] void **ppv); +} + +/***************************************************************************** + * INameSpaceTreeControl interface + */ +[ + object, + uuid(028212A3-B627-47E9-8856-C14265554E4F) +] +interface INameSpaceTreeControl : IUnknown +{ + [v1_enum] enum _NSTCSTYLE { + NSTCS_HASEXPANDOS = 0x00000001, + NSTCS_HASLINES = 0x00000002, + NSTCS_SINGLECLICKEXPAND = 0x00000004, + NSTCS_FULLROWSELECT = 0x00000008, + NSTCS_SPRINGEXPAND = 0x00000010, + NSTCS_HORIZONTALSCROLL = 0x00000020, + NSTCS_ROOTHASEXPANDO = 0x00000040, + NSTCS_SHOWSELECTIONALWAYS = 0x00000080, + NSTCS_NOINFOTIP = 0x00000200, + NSTCS_EVENHEIGHT = 0x00000400, + NSTCS_NOREPLACEOPEN = 0x00000800, + NSTCS_DISABLEDRAGDROP = 0x00001000, + NSTCS_NOORDERSTREAM = 0x00002000, + NSTCS_RICHTOOLTIP = 0x00004000, + NSTCS_BORDER = 0x00008000, + NSTCS_NOEDITLABELS = 0x00010000, + NSTCS_TABSTOP = 0x00020000, + NSTCS_FAVORITESMODE = 0x00080000, + NSTCS_AUTOHSCROLL = 0x00100000, + NSTCS_FADEINOUTEXPANDOS = 0x00200000, + NSTCS_EMPTYTEXT = 0x00400000, + NSTCS_CHECKBOXES = 0x00800000, + NSTCS_PARTIALCHECKBOXES = 0x01000000, + NSTCS_EXCLUSIONCHECKBOXES = 0x02000000, + NSTCS_DIMMEDCHECKBOXES = 0x04000000, + NSTCS_NOINDENTCHECKS = 0x08000000, + NSTCS_ALLOWJUNCTIONS = 0x10000000, + NSTCS_SHOWTABSBUTTON = 0x20000000, + NSTCS_SHOWDELETEBUTTON = 0x40000000, + NSTCS_SHOWREFRESHBUTTON = (int)0x80000000 + }; + typedef DWORD NSTCSTYLE; + + [v1_enum] enum _NSTCROOTSTYLE { + NSTCRS_VISIBLE = 0x0000, + NSTCRS_HIDDEN = 0x0001, + NSTCRS_EXPANDED = 0x0002 + }; + typedef DWORD NSTCROOTSTYLE; + + [v1_enum] enum _NSTCITEMSTATE { + NSTCIS_NONE = 0x0000, + NSTCIS_SELECTED = 0x0001, + NSTCIS_EXPANDED = 0x0002, + NSTCIS_BOLD = 0x0004, + NSTCIS_DISABLED = 0x0008, + NSTCIS_SELECTEDNOEXPAND = 0x0010 + }; + typedef DWORD NSTCITEMSTATE; + + typedef [v1_enum] enum NSTCGNI { + NSTCGNI_NEXT = 0, + NSTCGNI_NEXTVISIBLE = 1, + NSTCGNI_PREV = 2, + NSTCGNI_PREVVISIBLE = 3, + NSTCGNI_PARENT = 4, + NSTCGNI_CHILD = 5, + NSTCGNI_FIRSTVISIBLE = 6, + NSTCGNI_LASTVISIBLE = 7 + } NSTCGNI; + + HRESULT Initialize( + [in] HWND hwndParent, + [in, unique] RECT *prc, + [in] NSTCSTYLE nstcsFlags); + + HRESULT TreeAdvise( + [in] IUnknown *punk, + [out] DWORD *pdwCookie); + + HRESULT TreeUnadvise( + [in] DWORD dwCookie); + + HRESULT AppendRoot( + [in] IShellItem *psiRoot, + [in] SHCONTF grfEnumFlags, + [in] NSTCROOTSTYLE grfRootStyle, + [in, unique] IShellItemFilter *pif); + + HRESULT InsertRoot( + [in] int iIndex, + [in] IShellItem *psiRoot, + [in] SHCONTF grfEnumFlags, + [in] NSTCROOTSTYLE grfRootStyle, + [in, unique] IShellItemFilter *pif); + + HRESULT RemoveRoot( + [in] IShellItem *psiRoot); + + HRESULT RemoveAllRoots(); + + HRESULT GetRootItems( + [out] IShellItemArray **ppsiaRootItems); + + HRESULT SetItemState( + [in] IShellItem *psi, + [in] NSTCITEMSTATE nstcisMask, + [in] NSTCITEMSTATE nstcisFlags); + + HRESULT GetItemState( + [in] IShellItem *psi, + [in] NSTCITEMSTATE nstcismask, + [out] NSTCITEMSTATE *pnstcisFlags); + + HRESULT GetSelectedItems( + [out] IShellItemArray **psiaItems); + + HRESULT GetItemCustomState( + [in] IShellItem *psi, + [out] int *piStateNumber); + + HRESULT SetItemCustomState( + [in] IShellItem *psi, + [in] int iStateNumber); + + HRESULT EnsureItemVisible( + [in] IShellItem *psi); + + HRESULT SetTheme( + [in, string] LPCWSTR pszTheme); + + HRESULT GetNextItem( + [in, unique] IShellItem *psi, + [in] NSTCGNI nstcgi, + [out] IShellItem **ppsiNext); + + HRESULT HitTest( + [in] POINT *ppt, + [out] IShellItem **ppsiOut); + + HRESULT GetItemRect( + [in] IShellItem *psi, + [out] RECT *prect); + + HRESULT CollapseAll(); +} + +/***************************************************************************** + * INameSpaceTreeControl2 interface + */ +[ + object, + uuid(7CC7AED8-290E-49BC-8945-C1401CC9306C) +] +interface INameSpaceTreeControl2 : INameSpaceTreeControl +{ + typedef [v1_enum] enum NSTCSTYLE2 { + NSTCS2_DEFAULT = 0x00, + NSTCS2_INTERRUPTNOTIFICATIONS = 0x01, + NSTCS2_SHOWNULLSPACEMENU = 0x02, + NSTCS2_DISPLAYPADDING = 0x04, + NSTCS2_DISPLAYPINNEDONLY = 0x08, + NTSCS2_NOSINGLETONAUTOEXPAND = 0x10, /* The apparent typo here is */ + NTSCS2_NEVERINSERTNONENUMERATED = 0x20 /* present also in the Win SDK */ + } NSTCSTYLE2; + cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(NSTCSTYLE2)") + + HRESULT SetControlStyle( + [in] NSTCSTYLE nstcsMask, + [in] NSTCSTYLE nstcsStyle); + + HRESULT GetControlStyle( + [in] NSTCSTYLE nstcsMask, + [out] NSTCSTYLE *pnstcsStyle); + + HRESULT SetControlStyle2( + [in] NSTCSTYLE2 nstcsMask, + [in] NSTCSTYLE2 nstcsStyle); + + HRESULT GetControlStyle2( + [in] NSTCSTYLE2 nstcsMask, + [out] NSTCSTYLE2 *pnstcsStyle); +} + +/***************************************************************************** + * INameSpaceTreeControlEvents interface + */ + +[ + object, + uuid(93D77985-B3D8-4484-8318-672CDDA002CE), + local +] +interface INameSpaceTreeControlEvents : IUnknown +{ + [v1_enum] enum _NSTCEHITTEST { + NSTCEHT_NOWHERE = 0x0001, + NSTCEHT_ONITEMICON = 0x0002, + NSTCEHT_ONITEMLABEL = 0x0004, + NSTCEHT_ONITEMIDENT = 0x0008, + NSTCEHT_ONITEMBUTTON = 0x0010, + NSTCEHT_ONITEMRIGHT = 0x0020, + NSTCEHT_ONITEMSTATEICON = 0x0040, + NSTCEHT_ONITEM = 0x0046, + NSTCEHT_ONITEMTABBUTTON = 0x1000 + }; + typedef DWORD NSTCEHITTEST; + + [v1_enum] enum _NSTCECLICKTYPE { + NSTCECT_LBUTTON = 0x1, + NSTCECT_MBUTTON = 0x2, + NSTCECT_RBUTTON = 0x3, + NSTCECT_BUTTON = 0x3, + NSTCECT_DBLCLICK = 0x4 + }; + typedef DWORD NSTCECLICKTYPE; + + HRESULT OnItemClick( + [in] IShellItem *psi, + [in] NSTCEHITTEST nstceHitTest, + [in] NSTCECLICKTYPE nstceClickType); + + HRESULT OnPropertyItemCommit( + [in] IShellItem *psi); + + HRESULT OnItemStateChanging( + [in] IShellItem *psi, + [in] NSTCITEMSTATE nstcisMask, + [in] NSTCITEMSTATE nstcisState); + + HRESULT OnItemStateChanged( + [in] IShellItem *psi, + [in] NSTCITEMSTATE nstcisMask, + [in] NSTCITEMSTATE nstcisState); + + HRESULT OnSelectionChanged( + [in] IShellItemArray *psiaSelection); + + HRESULT OnKeyboardInput( + [in] UINT uMsg, + [in] WPARAM wParam, + [in] LPARAM lParam); + + HRESULT OnBeforeExpand( + [in] IShellItem *psi); + + HRESULT OnAfterExpand( + [in] IShellItem *psi); + + HRESULT OnBeginLabelEdit( + [in] IShellItem *psi); + + HRESULT OnEndLabelEdit( + [in] IShellItem *psi); + + HRESULT OnGetToolTip( + [in] IShellItem *psi, + [out, string, size_is(cchTip)] LPWSTR pszTip, + [in] int cchTip); + + HRESULT OnBeforeItemDelete( + [in] IShellItem *psi); + + HRESULT OnItemAdded( + [in] IShellItem *psi, + [in] BOOL fIsRoot); + + HRESULT OnItemDeleted( + [in] IShellItem *psi, + [in] BOOL fIsRoot); + + HRESULT OnBeforeContextMenu( + [in, unique] IShellItem *psi, + [in] REFIID riid, + [out, iid_is(riid)] void **ppv); + + HRESULT OnAfterContextMenu( + [in] IShellItem *psi, + [in] IContextMenu *pcmIn, + [in] REFIID riid, + [out, iid_is(riid)] void **ppv); + + HRESULT OnBeforeStateImageChange( + [in] IShellItem *psi); + + HRESULT OnGetDefaultIconIndex( + [in] IShellItem *psi, + [out] int *piDefaultIcon, + [out] int *piOpenIcon); +} +interface IFileDialog; + +typedef [v1_enum] enum FDE_OVERWRITE_RESPONSE +{ + FDEOR_DEFAULT = 0, + FDEOR_ACCCEP = 1, + FDEOR_REFUSE = 2 +} FDE_OVERWRITE_RESPONSE; + +typedef [v1_enum] enum FDE_SHAREVIOLATION_RESPONSE +{ + FDESVR_DEFAULT = 0, + FDESVR_ACCEPT = 1, + FDESVR_REFUSE = 2 +} FDE_SHAREVIOLATION_RESPONSE; + +/***************************************************************************** + * IFileDialogEvents interface + */ +[ + object, + uuid(973510DB-7D7F-452B-8975-74A85828D354), + pointer_default(unique) +] +interface IFileDialogEvents : IUnknown +{ + HRESULT OnFileOk( + [in] IFileDialog *pfd); + + HRESULT OnFolderChanging( + [in] IFileDialog *pfd, + [in] IShellItem *psiFolder); + + HRESULT OnFolderChange( + [in] IFileDialog *pfd); + + HRESULT OnSelectionChange( + [in] IFileDialog *pfd); + + HRESULT OnShareViolation( + [in] IFileDialog *pfd, + [in] IShellItem *psi, + [out] FDE_SHAREVIOLATION_RESPONSE *pResponse); + + HRESULT OnTypeChange( + [in] IFileDialog *pfd); + + HRESULT OnOverwrite( + [in] IFileDialog *pfd, + [in] IShellItem *psi, + [out] FDE_OVERWRITE_RESPONSE *pResponse); +} + +/***************************************************************************** + * IModalWindow interface + */ +[ + object, + uuid(B4DB1657-70D7-485E-8E3E-6FCB5A5C1802), + pointer_default(unique) +] +interface IModalWindow : IUnknown +{ + [local] + HRESULT Show( + [in, unique] HWND hwndOwner); + + [call_as(Show)] + HRESULT RemoteShow( + [in, unique] HWND hwndOwner); +} + +typedef [v1_enum] enum FDAP +{ + FDAP_BOTTOM = 0, + FDAP_TOP = 1 +} FDAP; + +/***************************************************************************** + * IFileDialog interface + */ +[ + object, + uuid(42F85136-DB7E-439C-85F1-E4075D135FC8), + pointer_default(unique) +] +interface IFileDialog : IModalWindow +{ + [v1_enum] enum _FILEOPENDIALOGOPTIONS + { + FOS_OVERWRITEPROMPT = 0x00000002, + FOS_STRICTFILETYPES = 0x00000004, + FOS_NOCHANGEDIR = 0x00000008, + FOS_PICKFOLDERS = 0x00000020, + FOS_FORCEFILESYSTEM = 0x00000040, + FOS_ALLNONSTORAGEITEMS = 0x00000080, + FOS_NOVALIDATE = 0x00000100, + FOS_ALLOWMULTISELECT = 0x00000200, + FOS_PATHMUSTEXIST = 0x00000800, + FOS_FILEMUSTEXIST = 0x00001000, + FOS_CREATEPROMPT = 0x00002000, + FOS_SHAREAWARE = 0x00004000, + FOS_NOREADONLYRETURN = 0x00008000, + FOS_NOTESTFILECREATE = 0x00010000, + FOS_HIDEMRUPLACES = 0x00020000, + FOS_HIDEPINNEDPLACES = 0x00040000, + FOS_NODEREFERENCELINKS = 0x00100000, + FOS_DONTADDTORECENT = 0x02000000, + FOS_FORCESHOWHIDDEN = 0x10000000, + FOS_DEFAULTNOMINIMODE = 0x20000000, + FOS_FORCEPREVIEWPANEON = 0x40000000 + }; + typedef DWORD FILEOPENDIALOGOPTIONS; + + HRESULT SetFileTypes( + [in] UINT cFileTypes, + [in, size_is(cFileTypes)] const COMDLG_FILTERSPEC *rgFilterSpec); + + HRESULT SetFileTypeIndex( + [in] UINT iFileType); + + HRESULT GetFileTypeIndex( + [out] UINT *piFileType); + + HRESULT Advise( + [in] IFileDialogEvents *pfde, + [out] DWORD *pdwCookie); + + HRESULT Unadvise( + [in] DWORD dwCookie); + + HRESULT SetOptions( + [in] FILEOPENDIALOGOPTIONS fos); + + HRESULT GetOptions( + [in] FILEOPENDIALOGOPTIONS *pfos); + + HRESULT SetDefaultFolder( + [in] IShellItem *psi); + + HRESULT SetFolder( + [in] IShellItem *psi); + + HRESULT GetFolder( + [out] IShellItem **ppsi); + + HRESULT GetCurrentSelection( + [out] IShellItem **ppsi); + + HRESULT SetFileName( + [in, string] LPCWSTR pszName); + + HRESULT GetFileName( + [out, string] LPWSTR *pszName); + + HRESULT SetTitle( + [in, string] LPCWSTR pszTitle); + + HRESULT SetOkButtonLabel( + [in, string] LPCWSTR pszText); + + HRESULT SetFileNameLabel( + [in, string] LPCWSTR pszLabel); + + HRESULT GetResult( + [out] IShellItem **ppsi); + + HRESULT AddPlace( + [in] IShellItem *psi, + [in] FDAP fdap); + + HRESULT SetDefaultExtension( + [in, string] LPCWSTR pszDefaultExtension); + + HRESULT Close( + [in] HRESULT hr); + + HRESULT SetClientGuid( + [in] REFGUID guid); + + HRESULT ClearClientData(); + + HRESULT SetFilter( + [in] IShellItemFilter *pFilter); +} + +/***************************************************************************** + * IFileDialog2 interface + */ +[ + object, + uuid(61744FC7-85B5-4791-A9B0-272276309B13), + pointer_default(unique) +] +interface IFileDialog2 : IFileDialog +{ + HRESULT SetCancelButtonLabel( + [in] LPCWSTR pszLabel); + + HRESULT SetNavigationRoot( + [in] IShellItem *psi); +} + +/***************************************************************************** + * IFileOperationProgressSink interface + */ +[ + object, + uuid(04B0F1A7-9490-44BC-96E1-4296A31252E2), + pointer_default(unique) +] +interface IFileOperationProgressSink : IUnknown +{ + HRESULT StartOperations(); + + HRESULT FinishOperations( + [in] HRESULT hrResult); + + HRESULT PreRenameItem( + [in] DWORD dwFlags, + [in] IShellItem *psiItem, + [in, unique, string] LPCWSTR pszNewName); + + HRESULT PostRenameItem( + [in] DWORD dwFlags, + [in] IShellItem *psiItem, + [in, string] LPCWSTR pszNewName, + [in] HRESULT hrRename, + [in] IShellItem *psiNewlyCreated); + + HRESULT PreMoveItem( + [in] DWORD dwFlags, + [in] IShellItem *psiItem, + [in] IShellItem *psiDestinationFolder, + [in, unique, string] LPCWSTR pszNewName); + + HRESULT PostMoveItem( + [in] DWORD dwFlags, + [in] IShellItem *psiItem, + [in] IShellItem *psiDestinationFolder, + [in, unique, string] LPCWSTR pszNewName, + [in] HRESULT hrMove, + [in] IShellItem *psiNewlyCreated); + + HRESULT PreCopyItem( + [in] DWORD dwFlags, + [in] IShellItem *psiItem, + [in] IShellItem *psiDestinationFolder, + [in, unique, string] LPCWSTR pszNewName); + + HRESULT PostCopyItem( + [in] DWORD dwFlags, + [in] IShellItem *psiItem, + [in] IShellItem *psiDestinationFolder, + [in, unique, string] LPCWSTR pszNewName, + [in] HRESULT hrCopy, + [in] IShellItem *psiNewlyCreated); + + HRESULT PreDeleteItem( + [in] DWORD dwFlags, + [in] IShellItem *psiItem); + + HRESULT PostDeleteItem( + [in] DWORD dwFlags, + [in] IShellItem *psiItem, + [in] HRESULT hrDelete, + [in] IShellItem *psiNewlyCreated); + + HRESULT PreNewItem( + [in] DWORD dwFlags, + [in] IShellItem *psiDestinationFolder, + [in, unique, string] LPCWSTR pszNewName); + + HRESULT PostNewItem( + [in] DWORD dwFlags, + [in] IShellItem *psiDestinationFolder, + [in, unique, string] LPCWSTR pszNewName, + [in, unique, string] LPCWSTR pszTemplateName, + [in] DWORD dwFileAttributes, + [in] HRESULT hrNew, + [in] IShellItem *psiNewItem); + + HRESULT UpdateProgress( + [in] UINT iWorkTotal, + [in] UINT iWorkSoFar); + + HRESULT ResetTimer(); + + HRESULT PauseTimer(); + + HRESULT ResumeTimer(); +} + +/***************************************************************************** + * IFileSaveDialog interface + */ +[ + object, + uuid(84BCCD23-5FDE-4CDB-AEA4-AF64B83D78AB), + pointer_default(unique) +] +interface IFileSaveDialog : IFileDialog +{ + HRESULT SetSaveAsItem( + [in] IShellItem *psi); + + HRESULT SetProperties( + [in] IPropertyStore *pStore); + + HRESULT SetCollectedProperties( + [in] IPropertyDescriptionList *pList, + [in] BOOL fAppendDefault); + + HRESULT GetProperties( + [in] IPropertyStore **ppStore); + + HRESULT ApplyProperties( + [in] IShellItem *psi, + [in] IPropertyStore *pStore, + [in, unique] HWND hwnd, + [in, unique] IFileOperationProgressSink *pSink); +} + + +/***************************************************************************** + * IFileOpenDialog interface + */ +[ + object, + uuid(D57C7288-D4AD-4768-BE02-9D969532D960), + pointer_default(unique) +] +interface IFileOpenDialog : IFileDialog +{ + HRESULT GetResults( + [out] IShellItemArray **ppenum); + + HRESULT GetSelectedItems( + [out] IShellItemArray **ppsai); +} + +typedef [v1_enum] enum tagKF_CATEGORY +{ + KF_CATEGORY_VIRTUAL = 0x00000001, + KF_CATEGORY_FIXED = 0x00000002, + KF_CATEGORY_COMMON = 0x00000003, + KF_CATEGORY_PERUSER = 0x00000004 +} KF_CATEGORY; + +typedef [v1_enum] enum tagKF_REDIRECTION_CAPABILITIES +{ + KF_REDIRECTION_CAPABILITIES_ALLOW_ALL = 0x000000ff, + KF_REDIRECTION_CAPABILITIES_REDIRECTABLE = 0x00000001, + KF_REDIRECTION_CAPABILITIES_DENY_ALL = 0x000fff00, + KF_REDIRECTION_CAPABILITIES_DENY_POLICY_REDIRECTED = 0x00000100, + KF_REDIRECTION_CAPABILITIES_DENY_POLICY = 0x00000200, + KF_REDIRECTION_CAPABILITIES_DENY_PERMISSIONS = 0x00000400 +} KF_REDIRECTION_CAPABILITIES; + +typedef [v1_enum] enum tagKF_DEFINITION_FLAGS +{ + KFDF_LOCAL_REDIRECT_ONLY = 0x00000002, + KFDF_ROAMABLE = 0x00000004, + KFDF_PRECREATE = 0x00000008, + KFDF_STREAM = 0x00000010, + KFDF_PUBLISHEXPANDEDPATH = 0x00000020 +} KF_DEFINITION_FLAGS; + +typedef struct tagKNOWNFOLDER_DEFINITION +{ + KF_CATEGORY category; + LPWSTR pszName; + LPWSTR pszDescription; + KNOWNFOLDERID fidParent; + LPWSTR pszRelativePath; + LPWSTR pszParsingName; + LPWSTR pszTooltip; + LPWSTR pszLocalizedName; + LPWSTR pszIcon; + LPWSTR pszSecurity; + DWORD dwAttributes; + KF_DEFINITION_FLAGS kfdFlags; + FOLDERTYPEID ftidType; +} KNOWNFOLDER_DEFINITION; + +[ + object, + uuid(3aa7af7e-9b36-420C-a8e3-f77d4674a488), + pointer_default(ref) +] +interface IKnownFolder : IUnknown +{ + HRESULT GetId( + [out] KNOWNFOLDERID *pkfid); + + HRESULT GetCategory( + [out] KF_CATEGORY *pCategory); + + HRESULT GetShellItem( + [in] DWORD dwFlags, + [in] REFIID riid, + [out, iid_is(riid)] void **ppv); + + HRESULT GetPath( + [in] DWORD dwFlags, + [out, string] LPWSTR *ppszPath); + + HRESULT SetPath( + [in] DWORD dwFlags, + [in, string] LPCWSTR pszPath); + + HRESULT GetIDList( + [in] DWORD dwFlags, + [out] PIDLIST_ABSOLUTE *ppidl); + + HRESULT GetFolderType( + [out] FOLDERTYPEID *pftid); + + HRESULT GetRedirectionCapabilities( + [out] KF_REDIRECTION_CAPABILITIES *pCapabilities); + + HRESULT GetFolderDefinition( + [out] KNOWNFOLDER_DEFINITION *pKFD); +} + +typedef [v1_enum] enum tagKF_REDIRECT_FLAGS +{ + KF_REDIRECT_USER_EXCLUSIVE = 0x00000001, + KF_REDIRECT_COPY_SOURCE_DACL = 0x00000002, + KF_REDIRECT_OWNER_USER = 0x00000004, + KF_REDIRECT_SET_OWNER_EXPLICIT = 0x00000008, + KF_REDIRECT_CHECK_ONLY = 0x00000010, + KF_REDIRECT_WITH_UI = 0x00000020, + KF_REDIRECT_UNPIN = 0x00000040, + KF_REDIRECT_PIN = 0x00000080, + KF_REDIRECT_COPY_CONTENTS = 0x00000200, + KF_REDIRECT_DEL_SOURCE_CONTENTS = 0x00000400, + KF_REDIRECT_EXCLUDE_ALL_KNOWN_SUBFOLDERS = 0x00000800 +} KF_REDIRECT_FLAGS; + +[ + object, + uuid(8BE2D872-86AA-4d47-B776-32CCA40C7018), + pointer_default(ref) +] +interface IKnownFolderManager : IUnknown +{ + typedef [v1_enum] enum tagFFFP_MODE + { + FFFP_EXACTMATCH, + FFFP_NEARESTPARENTMATCH + } FFFP_MODE; + + HRESULT FolderIdFromCsidl( + [in] int nCsidl, + [out] KNOWNFOLDERID *pfid); + + HRESULT FolderIdToCsidl( + [in] REFKNOWNFOLDERID rfid, + [out] int *pnCsidl); + + HRESULT GetFolderIds( + [out, size_is(, *pCount)] KNOWNFOLDERID **ppKFId, + [in, out] UINT *pCount); + + HRESULT GetFolder( + [in] REFKNOWNFOLDERID rfid, + [out] IKnownFolder **ppkf); + + HRESULT GetFolderByName( + [in, string] LPCWSTR pszCanonicalName, + [out] IKnownFolder **ppkf); + + HRESULT RegisterFolder( + [in] REFKNOWNFOLDERID rfid, + [in] KNOWNFOLDER_DEFINITION const *pKFD); + + HRESULT UnregisterFolder( + [in] REFKNOWNFOLDERID rfid); + + HRESULT FindFolderFromPath( + [in, string] LPCWSTR pszPath, + [in] FFFP_MODE mode, + [out] IKnownFolder **ppkf); + + HRESULT FindFolderFromIDList( + [in] PCIDLIST_ABSOLUTE pidl, + [out] IKnownFolder **ppkf); + + HRESULT Redirect( + [in] REFKNOWNFOLDERID rfid, + [in, unique] HWND hwnd, + [in] KF_REDIRECT_FLAGS flags, + [in, unique, string] LPCWSTR pszTargetPath, + [in] UINT cFolders, + [in, size_is(cFolders), unique] KNOWNFOLDERID const *pExclusion, + [out, string] LPWSTR *ppszError); +} + +/* function for releasing structure returned from IKnownFolder::GetFolderDefinition */ +cpp_quote("static inline void FreeKnownFolderDefinitionFields(KNOWNFOLDER_DEFINITION *pKFD)") +cpp_quote("{") +cpp_quote(" CoTaskMemFree(pKFD->pszName);") +cpp_quote(" CoTaskMemFree(pKFD->pszDescription);") +cpp_quote(" CoTaskMemFree(pKFD->pszRelativePath);") +cpp_quote(" CoTaskMemFree(pKFD->pszParsingName);") +cpp_quote(" CoTaskMemFree(pKFD->pszTooltip);") +cpp_quote(" CoTaskMemFree(pKFD->pszLocalizedName);") +cpp_quote(" CoTaskMemFree(pKFD->pszIcon);") +cpp_quote(" CoTaskMemFree(pKFD->pszSecurity);") +cpp_quote("}") + +typedef [v1_enum] enum ASSOCIATIONLEVEL { + AL_MACHINE, + AL_EFFECTIVE, + AL_USER +} ASSOCIATIONLEVEL; + +typedef [v1_enum] enum ASSOCIATIONTYPE { + AT_FILEEXTENSION, + AT_URLPROTOCOL, + AT_STARTMENUCLIENT, + AT_MIMETYPE +} ASSOCIATIONTYPE; + +[ + object, + uuid(4e530b0a-e611-4c77-a3ac-9031d022281b), + pointer_default(unique) +] +interface IApplicationAssociationRegistration : IUnknown +{ + HRESULT QueryCurrentDefault( + [in, string] LPCWSTR pszQuery, + [in] ASSOCIATIONTYPE atQueryType, + [in] ASSOCIATIONLEVEL alQueryLevel, + [out, string] LPWSTR *ppszAssociation); + + HRESULT QueryAppIsDefault( + [in, string] LPCWSTR pszQuery, + [in] ASSOCIATIONTYPE atQueryType, + [in] ASSOCIATIONLEVEL alQueryLevel, + [in, string] LPCWSTR pszAppRegistryName, + [out] BOOL *pfDefault); + + HRESULT QueryAppIsDefaultAll( + [in] ASSOCIATIONLEVEL alQueryLevel, + [in, string] LPCWSTR pszAppRegistryName, + [out] BOOL* pfDefault); + + HRESULT SetAppAsDefault( + [in, string] LPCWSTR pszAppRegistryName, + [in, string] LPCWSTR pszSet, + [in] ASSOCIATIONTYPE atSetType); + + HRESULT SetAppAsDefaultAll( + [in, string] LPCWSTR pszAppRegistryName); + + HRESULT ClearUserAssociations(); +} + +[ + uuid(6332debf-87b5-4670-90c0-5e57b408a49e), + object, + pointer_default(unique) +] +interface ICustomDestinationList : IUnknown +{ + typedef [v1_enum] enum KNOWNDESTCATEGORY { + KDC_FREQUENT = 1, + KDC_RECENT + } KNOWNDESTCATEGORY; + + HRESULT SetAppID([in, string] LPCWSTR pszAppID); + + HRESULT BeginList( + [out] UINT *pcMinSlots, + [in] REFIID riid, + [out, iid_is(riid)] void **ppv); + + HRESULT AppendCategory( + [in, string] LPCWSTR pszCategory, + [in] IObjectArray *poa); + + HRESULT AppendKnownCategory([in] KNOWNDESTCATEGORY category); + HRESULT AddUserTasks([in] IObjectArray *poa); + HRESULT CommitList(); + + HRESULT GetRemovedDestinations( + [in] REFIID riid, + [out, iid_is(riid)] void **ppv); + + HRESULT DeleteList([in, unique, string] LPCWSTR pszAppID); + HRESULT AbortList(); +} + +/***************************************************************************** + * ShellObjects typelibrary + */ +[ + uuid(50A7E9B1-70EF-11D1-B75A-00A0C90564FE), + lcid(0x0000), + version(1.0) +] +library ShellObjects +{ + [ + uuid(71F96385-DDD6-48D3-A0C1-AE06E8B055FB) + ] + coclass ExplorerBrowser + { + interface IExplorerBrowser; + } + + [ + uuid(DC1C5A9C-E88A-4DDE-A5A1-60F82A20AEF7) + ] + coclass FileOpenDialog + { + interface IFileOpenDialog; + } + + [ + uuid(C0B4E2F3-BA21-4773-8DBA-335EC946EB8B) + ] + coclass FileSaveDialog + { + interface IFileSaveDialog; + } + + [ + uuid(AE054212-3535-4430-83ED-D501AA6680E6) + ] + coclass NamespaceTreeControl + { + interface INameSpaceTreeControl2; + } + + [ + uuid(4df0c730-df9d-4ae3-9153-aa6b82e9795a) + ] + coclass KnownFolderManager + { + interface IKnownFolderManager; + } + + [ + uuid(591209c7-767b-42b2-9fba-44ee4615f2c7) + ] + coclass ApplicationAssociationRegistration + { + interface IApplicationAssociationRegistration; + } + + [ + uuid(00021401-0000-0000-c000-000000000046) + ] + coclass ShellLink + { + interface IShellLinkW; + } + + [ + uuid(56fdf344-fd6d-11d0-958a-006097c9a090) + ] + coclass TaskbarList + { + interface ITaskbarList4; + } + + [ + uuid(77f10cf0-3db5-4966-b520-b7c54fd35ed6) + ] + coclass DestinationList { + interface ICustomDestinationList; + } + } diff --git a/reactos/include/psdk/shtypes.idl b/reactos/include/psdk/shtypes.idl index 0bd9ebb19d1..05f2b1614f0 100644 --- a/reactos/include/psdk/shtypes.idl +++ b/reactos/include/psdk/shtypes.idl @@ -80,6 +80,12 @@ typedef struct } SHELLDETAILS, *LPSHELLDETAILS; cpp_quote("#include ") +typedef struct _COMDLG_FILTERSPEC +{ + [string] LPCWSTR pszName; + [string] LPCWSTR pszSpec; +} COMDLG_FILTERSPEC; + typedef [v1_enum] enum tagSHCOLSTATE { SHCOLSTATE_DEFAULT = 0, @@ -105,3 +111,27 @@ typedef [v1_enum] enum tagSHCOLSTATE } SHCOLSTATE; typedef DWORD SHCOLSTATEF; + +typedef GUID KNOWNFOLDERID; + +cpp_quote("#if 0") +typedef KNOWNFOLDERID *REFKNOWNFOLDERID; +cpp_quote("#endif") + +cpp_quote("#ifdef __cplusplus") +cpp_quote("#define REFKNOWNFOLDERID const KNOWNFOLDERID &") +cpp_quote("#else") +cpp_quote("#define REFKNOWNFOLDERID const KNOWNFOLDERID * __MIDL_CONST") +cpp_quote("#endif") + +typedef GUID FOLDERTYPEID; + +cpp_quote("#if 0") +typedef FOLDERTYPEID *REFFOLDERTYPEID; +cpp_quote("#endif") + +cpp_quote("#ifdef __cplusplus") +cpp_quote("#define REFFOLDERTYPEID const FOLDERTYPEID &") +cpp_quote("#else") +cpp_quote("#define REFFOLDERTYPEID const FOLDERTYPEID * __MIDL_CONST") +cpp_quote("#endif") diff --git a/reactos/lib/sdk/uuid/uuid.c b/reactos/lib/sdk/uuid/uuid.c index afa9847af62..b5b6ea6ea06 100644 --- a/reactos/lib/sdk/uuid/uuid.c +++ b/reactos/lib/sdk/uuid/uuid.c @@ -158,7 +158,6 @@ DEFINE_GUID(CLSID_TF_InputProcessorProfiles, 0x33c53a50,0xf456,0x4884,0xb0,0x49, DEFINE_GUID(CLSID_TF_CategoryMgr, 0xA4B544A1,0x438D,0x4B41,0x93,0x25,0x86,0x95,0x23,0xE2,0xD6,0xC7); DEFINE_GUID(CLSID_TF_LangBarMgr, 0xebb08c45,0x6c4a,0x4fdc,0xae,0x53,0x4e,0xb8,0xc4,0xc7,0xdb,0x8e); DEFINE_GUID(CLSID_TF_DisplayAttributeMgr, 0x3ce74de4,0x53d3,0x4d74,0x8b,0x83,0x43,0x1b,0x38,0x28,0xba,0x53); -DEFINE_GUID(CLSID_TaskbarList, 0x56fdf344,0xfd6d,0x11d0,0x95,0x8a,0x00,0x60,0x97,0xc9,0xa0,0x90); DEFINE_GUID(GUID_TFCAT_TIP_KEYBOARD, 0x34745c63,0xb2f0,0x4784,0x8b,0x67,0x5e,0x12,0xc8,0x70,0x1a,0x31); DEFINE_GUID(GUID_TFCAT_TIP_SPEECH, 0xB5A73CD1,0x8355,0x426B,0xA1,0x61,0x25,0x98,0x08,0xF2,0x6B,0x14); DEFINE_GUID(GUID_TFCAT_TIP_HANDWRITING, 0x246ecb87,0xc2f2,0x4abe,0x90,0x5b,0xc8,0xb3,0x8a,0xdd,0x2c,0x43);