1090 Commits
Author SHA1 Message Date
Whindmar Saksit 16bb138e32 [SHELL32][SHELL32_APITEST] Handle named registry verbs in CDefaultContextMenu::InvokeCommand (#9340)
CORE-20690
2026-08-04 18:39:14 +02:00
Whindmar Saksit 4fecc908e7 [SHELL32] All SHELLSTATE members must be initialized before writing to the registry (#9293)
A more reliable fix.

CORE-20585
2026-07-28 16:14:13 +02:00
Whindmar Saksit 68a03b2e1a [BROWSEUI][SHELL32] Prevent crash by unsubclassing DefView during teardown (#9305)
CORE-20504
2026-07-24 11:38:06 +02:00
095860df57 [SDK][SHELL32] A big bundle of NT6+ shell32 implementations and stubs (#8834)
Split off CShellitemArray
stub out CShellLibrary
stub out CUserEventTimer
rewrite some vista shellitem APIs
Misc stubs for vista
AddITaskbarList3/ITaskbarList4

---------

Co-authored-by: Oleb Dubinskiy <[email protected]>
Co-authored-by: Mikhail Tyukin <[email protected]>
2026-07-21 12:11:29 -07:00
Whindmar Saksit a5f51269c8 [SHELL32] Add FolderItems3 support (move/copy directory tree) (#9235)
- Added copy/move support for FolderItems collections.
- Added support for InvokeVerbEx on FolderItems collections.
- Added filter support for FolderItems collections.
2026-07-16 15:58:14 +02:00
Serge Gautherie f9e3448f16 [BOOT][ROSTESTS][SHELL32][USERENV] Fix 'StartUp' typo (#8304)
CORE-18893
2026-07-11 23:47:53 +02:00
Ethem Çılgın 7d08042343 [SHELL32] Improve Turkish (tr-TR) translation (#9222)
Translate several missing English strings and fix translation error in the context menu.

- Update `IDS_MOVETOMENU` from `"Di&zini kopyala..."` to `"Di&zine taşı..."`. The previous translation mistakenly used "kopyala" (copy) for a move operation, which caused confusion and duplicated string appearance in the shell context menu.
- Complete translations for various previously untranslated strings (including advanced folder options, visual effects, and shortcut run states).
2026-07-09 15:14:13 +03:00
Katayama Hirofumi MZ 79761d88fd [SHELL32][SHLWAPI][SHELL32_APITEST][SDK] Support AssocCreateElement (#9215)
Prepare for CLSID_QueryAssociations.
JIRA issue: CORE-20467
- Add dll/win32/shell32/evalcmd/
  elements.cpp.
- Implement AssocCreateElement
  function in elements.cpp.
- Modify shell32.spec.
- Fix shlwapi!AssocCreate by using
  AssocCreateElement.
- Add SKGetValueW and
  SKSetValueW prototypes into
  <shlwapi_undoc.h>.
- Add AssocCreateElement
  prototype into <shlwapi_undoc.h>.
- Add some CLSIDs into
  <shlguid_undoc.h>.
- Add some resource strings into
  shlwapi.
- Add AssocGetPerceivedType
  prototype into <shlwapi.h>.
- Add AssocCreateElement
  testcase into shell32_apitest.
2026-07-04 01:10:31 +09:00
Whindmar Saksit c891aefdcf [SHELL32] Implement CFolder[Item] getters/setters (#9173) 2026-07-01 11:41:17 +02:00
Alex Mendoza 02f2314139 [SHELL32] Implement LockServer (#9055) 2026-06-27 16:36:29 +02:00
Katayama Hirofumi MZ 546297fe86 [SHELL32][SHLWAPI][BROWSEUI][SHELL32_APITEST][SDK][KBSWITCH][RAPPS] Support SHEvaluateSystemCommandTemplate (#9111)
This function has an important role
for new ShellExecute implementation.
JIRA issue: CORE-19278
- Add evalcmd static library into
  dll/win32/shell32/evalcmd.
- Implement
  SHEvaluateSystemCommandTemplate
  in evalcmd.
- Link evalcmd to shell32 and shlwapi.
- Modify shell32.spec and shlwapi.spec.
- Add prototype to <shellapi.h>.
- Add
  SHEvaluateSystemCommandTemplate
  testcase.
- Define PathIsAbsolute inline
  function in <shlwapi_undoc.h>
  and use it.
2026-06-24 20:35:37 +09:00
Timo Kreuzer da8f604da0 [SHELL32] Forward SHSetInstanceExplorer to shcore.SetProcessReference
Addendum to commit aaf231f
2026-06-23 18:10:39 +00:00
Timo Kreuzer 0e245f97b5 [SHELL32] shell32.spec: Add Vista exports 2026-06-23 18:10:39 +00:00
Timo Kreuzer c3d6516f20 [SHELL32] Make Shell_GetCachedImageIndexW EXTERN_C 2026-06-23 18:10:39 +00:00
Timo Kreuzer a790beb22b [SHELL32] Fix SHBindToObject
This should have 5 parameters and stdcall convention.
Get rid of SHBindToObjectEx.
2026-06-23 18:10:39 +00:00
Timo Kreuzer 4f329a03b7 [SHELL32] shell32.epsc: Move automatic ordinals to the bottom 2026-06-23 18:10:39 +00:00
Timo Kreuzer bd6d9b73ee [SHELL32] shell32.spec: Mark auto-ordinal exports with @
This also adds comments about the ordinal on Windows 2003 and Vista
2026-06-23 18:10:39 +00:00
Katayama Hirofumi MZ 0533a67b18 [SHLWAPI][SHELL32][SDK] Support SHRestrictedMessageBox (#9160)
Implementing missing features...
JIRA issue: CORE-19278
- Add IDS_RESTRICTED and IDS_RESTRICTIONS
  resource strings.
- Implement SHRestrictedMessageBox function.
- Modify shlwapi.spec.
- Add prototype into <shlwapi_undoc.h>.
- Restrict Folder Options on
  REST_NOFOLDEROPTIONS by using
  SHRestrictedMessageBox.
2026-06-20 09:25:47 +09:00
Timo Kreuzer aaf231f00f [SHELL32] Forward SHGetInstanceExplorer to shcore.GetProcessReference
Fixes 3 shcore wine tests.
2026-06-18 23:27:41 +00:00
Whindmar Saksit a83411cfef [SHELL32] Avoid SHRunControlPanel to be Vista compatible (#9114) 2026-06-14 00:24:59 +02:00
Whindmar Saksit 3b58b347bc [EXPLORER][SHELL32] Forward Explorer refresh command to the Start Menu (#9108) 2026-06-07 21:28:13 +02:00
Katayama Hirofumi MZ fe2b8ba41b [SHELL32][SDK] Support CShellDispatch::EjectPC (#9097)
Implementing missing features...
JIRA issue: N/A
- Implement CShellDispatch::EjectPC
  by using TRAYCMD_EJECT tray
  command.
- Add TRAYCMD_SUSPEND and
  TRAYCMD_REFRESH_MENU tray
  commands (they have no effect)
  into <undocshell.h>.
2026-06-02 17:39:56 +09:00
Katayama Hirofumi MZ b60f66cbbf [SHELL32] CPrinterFolder: Support IQueryAssociations (#9060)
ShellExecute implementation requires
a valid IQueryAssociations interface.
https://learn.microsoft.com/en-us/windows/win32/shell/nse-implement
JIRA issue: CORE-20467
Enhance CPrinterFolder::GetUIObjectOf
for IQueryAssociations.
2026-05-25 15:49:44 +09:00
Doug Lyons 39ad1b6824 [SHELL32] Set ShellState registry entry when default is needed (#9037)
CORE-20585

When ShellState is needed and there is no registry key use defaults and save value to registry.
2026-05-23 18:06:16 -05:00
Hermès Bélusca-Maïto 9342ed43d9 [SHELL32] Better determine whether to hide or show shell-folder namespace items (#9046)
In `SHELL32_IsShellFolderNamespaceItemHidden()`, use `SHRegGetBoolUSValue()`
to look at both `HKEY_CURRENT_USER` with fallback to `HKEY_LOCAL_MACHINE`,
when searching for the registry value that determines whether a shell-folder
namespace item is to be hidden or shown.

Behaviour confirmed on Windows 2003.

Addendum to commit 6ae11ba09d (PR #7189).
2026-05-21 22:37:17 +02:00
Alex Mendoza 7cba1c80a7 [SHELL32]: Fix E_OUTOFMEMORY not being returned on allocation failure in ASSOCSTR_DEFAULTICON (#8866)
Fix `ASSOCSTR_DEFAULTICON` in `CQueryAssociations::GetString` incorrectly returning **S_OK** instead of **E_OUTOFMEMORY** when HeapAlloc fails.
2026-05-10 00:50:46 +02:00
Timo Kreuzer b13e568d99 [CMAKE] Remove global _CRT_NON_CONFORMING_SWPRINTFS
Instead define it only in 3rd-party code where required.
Most of these will go away with future wine-syncs.
2026-05-07 06:27:58 +00:00
Timo Kreuzer 1cf31524d5 [REACTOS] Stop using non-conforming swprintf / vswprintf
Use the underscored versions instead.
2026-05-07 06:27:58 +00:00
Hermès Bélusca-Maïto ba7a6fc7d9 [SHELL32][SDK] The SHELL_LINK_HEADER::nIconIndex member is a signed 32-bit integer 2026-05-04 22:02:21 +02:00
Katayama Hirofumi MZ 2cbce1c043 [SHELL32][SDK] Implement SHHandleUpdateImage and SHUpdateImageW (#8884)
Implementing missing features...
JIRA issue: CORE-19278
- Add SHLookupIconIndexA/W
  prototypes into <undocshell.h>.
- Add StrCpyNXA/W prototypes
  into <shlwapi_undoc.h>.
- Define SHCNF_UPDATEIMAGE_DATA_1
  and SHCNF_UPDATEIMAGE_DATA_2
  structures in <undocshell.h>.
- Implement SHHandleUpdateImage
  and SHUpdateImageW functions.
2026-04-26 20:11:24 +09:00
Katayama Hirofumi MZ 07d544ff07 [SHELL32][SDK] Implement SHSetLocalizedName (#8879)
Implementing missing features... Renaming
My Computer's name etc..
JIRA issue: CORE-19278
- Implement SHSetLocalizedName function.
- Add prototype to <shellapi.h>.
Co-authored-by: Vitaly Orekhov <[email protected]>
Co-authored-by: Hermès BÉLUSCA - MAÏTO <[email protected]>
2026-04-24 08:57:54 +09:00
Katayama Hirofumi MZ 9e5774e75c [SHELL32][SDK] Implement CDefFolderMenu_MergeMenu (#8875)
Implementing missing functions...
JIRA issue: CORE-19278
- Add _SHMergePopupMenus and
  SHLoadPopupMenu helper
  functions.
- Implement
  CDefFolderMenu_MergeMenu
  function in utils.cpp.
- Add function prototype into
  <undocshell.h>.
2026-04-23 22:59:05 +09:00
Katayama Hirofumi MZ d6cc284435 [SHELL32][SDK] Implement LinkWindow_RegisterClass (#8878)
Implementing missing features...
JIRA issue: CORE-19278
- Implement LinkWindow_RegisterClass
  function by using "superclassing".
- Add prototype to <undocshell.h>.
2026-04-23 22:50:03 +09:00
Katayama Hirofumi MZ 98bebe868b [SHELL32] Implement SHUpdateImageA (#8880)
JIRA issue: CORE-19278
Co-authored-by: Vitaly Orekhov <[email protected]>
2026-04-21 01:18:48 +09:00
Alex Mendoza fd683dbba4 [SHELL32] AddCommasW: Use LOCALE_SGROUPING instead of harcoded grouping (#8814) 2026-04-01 14:27:17 +02:00
Ahmed Arif 6730ec5508 [SHELL32] Fix CD-ROM eject not refreshing drive text labels in folder view (#8789)
Fix CD-ROM eject in Explorer's "My Computer" not updating the drive text label (e.g., "ReactOS LiveCD (D:)" staying after eject). LV_RefreshIcon() only invalidated the cached icon (I_IMAGECALLBACK) but not the cached text, so the ListView never re-queried the display name.

Add text invalidation (LPSTR_TEXTCALLBACK) to force label refresh on media change events.
2026-03-28 14:24:27 +01:00
Timo Kreuzer dbaf14d4a1 [SHELL32] Reduce diff to wine (indentation)
Fixes GCC 13 warnings about misleading indentation.

C:/ReactOS/reactos/dll/win32/shell32/wine/classes.c: In function 'HCR_GetIconA':
C:/ReactOS/reactos/dll/win32/shell32/wine/classes.c:357:5: error: this 'else' clause does not guard... [-Werror=misleading-indentation]
  357 |     else
      |     ^~~~
C:/ReactOS/reactos/dll/win32/shell32/wine/classes.c:360:9: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else'
  360 |         return ret;
      |         ^~~~~~

C:/ReactOS/reactos/dll/win32/shell32/wine/shellord.c: In function 'SHCreateStdEnumFmtEtc':
C:/ReactOS/reactos/dll/win32/shell32/wine/shellord.c:2455:5: error: this 'if' clause does not guard... [-Werror=misleading-indentation]
 2455 |     if (FAILED(hRes))
      |     ^~
In file included from C:/ReactOS/reactos/sdk/include/psdk/objbase.h:252,
                 from C:/ReactOS/reactos/sdk/include/psdk/ole2.h:25,
                 from C:/ReactOS/reactos/sdk/include/psdk/shlobj.h:22,
                 from C:/ReactOS/reactos/dll/win32/shell32/wine/shellord.c:32:
C:/ReactOS/build-gcc-x86/sdk/include/psdk/objidl.h:9734:37: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
 9734 | #define IEnumFORMATETC_AddRef(This) (This)->lpVtbl->AddRef(This)
      |                                     ^
C:/ReactOS/reactos/dll/win32/shell32/wine/shellord.c:2458:9: note: in expansion of macro 'IEnumFORMATETC_AddRef'
 2458 |         IEnumFORMATETC_AddRef(pef);
      |         ^~~~~~~~~~~~~~~~~~~~~
2026-03-18 17:29:12 +02:00
Timo Kreuzer 46121f4643 [SHELL32] Disable GCC 13 overloaded-virtual warning
This is some ATL weirdness. Someone familiar with this should do a more proper fix.

C:/ReactOS/reactos/sdk/lib/atl/atlcom.h: In instantiation of 'class ATL::CComObject<IDefClFImpl>':
C:/ReactOS/reactos/sdk/include/reactos/shellutils.h:401:45:   required from 'HRESULT ShellObjectCreatorInit(T1, T2, T3, const IID&, void**) [with T = IDefClFImpl; T1 = long int (__attribute__((stdcall)) *)(IUnknown*, const _GUID&, void**); T2 = long int*; T3 = const _GUID*; HRESULT = long int; IID = _GUID]'
C:/ReactOS/reactos/dll/win32/shell32/shell32.cpp:202:47:   required from here
C:/ReactOS/reactos/dll/win32/shell32/shell32.cpp:172:16: error: 'virtual HRESULT IDefClFImpl::CreateInstance(IUnknown*, const IID&, void**)' was hidden [-Werror=overloaded-virtual=]
  172 | HRESULT WINAPI IDefClFImpl::CreateInstance(IUnknown * pUnkOuter, REFIID riid, LPVOID *ppvObject)
      |                ^~~~~~~~~~~
In file included from C:/ReactOS/reactos/dll/win32/shell32/precomp.h:32,
                 from C:/ReactOS/reactos/dll/win32/shell32/shell32.cpp:22:
C:/ReactOS/reactos/sdk/lib/atl/atlcom.h:171:27: note:   by 'static HRESULT ATL::CComObject<Base>::CreateInstance(ATL::CComObject<Base>**) [with Base = IDefClFImpl; HRESULT = long int]'
  171 |     static HRESULT WINAPI CreateInstance(CComObject<Base> **pp)
      |                           ^~~~~~~~~~~~~~
2026-03-18 17:29:12 +02:00
Hermès Bélusca-Maïto 1aab8a87c4 [SHELL32][NTUSER] Fix "accessability" typo 2026-02-21 17:32:32 +01:00
Katayama Hirofumi MZ c61d98f939 [SHELL32] Delete SHMultiFileProperties declaration
Follow-up of #8639. Our <shlobj.h> has already SHMultiFileProperties prototype.
CORE-17311
2026-02-14 13:41:54 +09:00
Katayama Hirofumi MZ 6af07a31b0 [FONTEXT][SHELL32][SDK] Support delete operation (#8639)
Improve usability of Fonts folder.
JIRA issue: CORE-17311
- Modify PIDL design to contain
  name and filename.
- Implement CFontExt::
  ParseDisplayName to parsing
  name as PIDL.
- Modify CDefaultContextMenu::
  GetCommandString and
  CDefaultContextMenu::
  DoCopyOrCut for DFM_GETVERBA,
  DFM_GETVERBW, DFM_CMD_COPY,
  and DFM_CMD_MOVE.
- Add IDS_CONFIRM_DELETE_FONT,
  IDS_CANTDELETEFONT, and
  IDS_PROPERTIES resource strings.
- Add SHMultiFileProperties
  prototype to <shlobj.h>.
2026-02-13 18:37:06 +09:00
Katayama Hirofumi MZ c11583c817 [ZIPFLDR][SHELL32] Support delete operation in Zip Folder (#8643)
Follow-up of #8632. Improve usability of ZIP Folder.
JIRA issue: CORE-20464
- Add IDS_CONFIRMDELETE_TEXT and
  IDS_CANTDELETEFILE resource strings.
- When deleting files in Zip Folder, create a
  temporary file.
- CZipFolder::CopyZipEntry adds files to the
  temporary file without adding files to delete.
- Replacing the target ZIP file with the temporary
  file implements deleting files in Zip Folder.
- Add SFGAO_CANDELETE attribute.
- Add DFM_CMD_DELETE action.
- Modify CDefaultContextMenu in shell32 to invoke DFM_CMD_DELETE etc.
- Modify CNewMenu::LoadItem in shell32.
2026-02-07 18:28:23 +09:00
Katayama Hirofumi MZ 85cdb75536 [SHELL32] SHOpenWithDialog: Write DefaultIcon registry key (#8634)
JIRA issue: CORE-19670
- Write DefaultIcon registry key
  when association changes.
- Call SHChangeNotify(
  SHCNE_ASSOCCHANGED, ...).
2026-01-31 02:23:41 +09:00
Katayama Hirofumi MZ 13c4ef9c40 [BOOTDATA][SHELL32][SHIMGVW] Populate HKCR\SystemFileAssociations (#8626)
JIRA issue: CORE-19355
- Modify boot/bootdata/hivecls.inf.
- Add dll/win32/shell32/res/rgs/
  systemfileassociations.rgs.
- Add dll/win32/shimgvw/res/
  systemfileassociations.rgs.
2026-01-29 07:13:30 +09:00
Katayama Hirofumi MZ efca5040cb [SHELL32] Get PerceivedType default icon (#8627)
Related to #8626. Display the correct icon.
JIRA issue: CORE-19355
- Modify CFSExtractIcon_CreateInstance function to load
  PerceivedType default icon.
2026-01-24 10:08:02 +09:00
Katayama Hirofumi MZ 69f10f6d38 [SHELL32] Add access key to IDS_OPEN_VERB and IDS_EXPLORE_VERB (#8619)
Improve keyboard accessibility.
JIRA issue: CORE-12323
2026-01-23 22:11:48 +09:00
Katayama Hirofumi MZ f6bb2c98d8 [SHELL32] Fix L'PerceivedType ' typo (#8620)
JIRA issue: N/A
2026-01-22 21:19:09 +09:00
Katayama Hirofumi MZ f60b1c99c8 [SHELL32] Refresh Recycle Bin (#8594)
The filesystem of the virtual folder
"Recycle Bin" is complicated, so we
had to add special handling to watch
change notification on it.
JIRA issue: CORE-20435
- Add CRecycleBinFolderViewCB.cpp
  and CRecycleBinFolderViewCB.h.
- Add CRecycleBinFolderViewCB class
  (with IShellFolderViewCB interface)
  and associate it with CRecycleBin.
- Hook SFVM_QUERYFSNOTIFY and
  SFVM_FSNOTIFY in
  CRecycleBinFolderViewCB.
- Implement watching of shell change
  notification.
2026-01-20 08:40:09 +09:00
Katayama Hirofumi MZ ba1e474a98 [SHELL32] Translating PIDLs: Check NULL and fix PIDL flags update (#8603)
#8569 introduced an exception bug.
JIRA issue: CORE-20441
- In CreateNotificationParamAndSend
  function, check NULL for PIDLs.
- In SHELL32_ReparentAsAliasPidl
  function, fix updating PIDL flags.
2026-01-17 23:21:19 +09:00
Katayama Hirofumi MZ eafe25143b [SHELL32] FileTypesDlg: Use StrCmpIW instead of wcsicmp (#8604)
wcsicmp depends on CRT locale status. We have to respect
thread locale.
JIRA issue: CORE-20442
- Use shlwapi!StrCmpIW instead of wcsicmp in
  FileTypesDlg_CompareItems function.
2026-01-17 20:34:44 +09:00