Commit Graph
1080 Commits
Author SHA1 Message Date
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
Katayama Hirofumi MZ ae3aee6ee3 [SHELL32] Fix CFSFolder::CompareIDs.SHFSF_COL_TYPE (#8589)
JIRA issue: CORE-20434
Fix 1st bug of CORE-20434.
- In CFSFolder::CompareIDs, implement
  SHFSF_COL_TYPE, using
  SHGetFileInfoW.
2026-01-15 07:09:54 +09:00
Katayama Hirofumi MZ eae4bdb95e [SHELL32] Translate PIDLs for change notification and ParseDisplayName (#8569)
Change notification on a folder on
Desktop was failing due to
mismatching PIDLs.
We translate PIDLs to match the
alias PIDLs.
JIRA issue: CORE-19630
JIRA issue: CORE-19820
JIRA issue: CORE-16941
- Add SHELL32_ReparentAsAliasPidl
  and SHELL32_AliasTranslatePidl
  helper functions. They translate a
  PIDL to an "alias" PIDL.
- Implement SHLogILFromFSIL
  function.
- Use SHELL32_AliasTranslatePidl
 in CDesktopFolder::ParseDisplayName
  instread of Shell_TranslateIDListAlias.
- Use SHELL32_AliasTranslatePidl
  in CreateNotificationParam.
2026-01-11 20:29:54 +09:00
Hermès Bélusca-Maïto e616f29a24 🎆 ⚛️ ☢️ Happy New Year 2026 to the ReactOS community! 🎊 🍾 🥳
And do you know what this also means?!
...
Yes, you've guessed it...
...
It means that in few days, ReactOS will be 30 !! 🎉 🥳
2026-01-01 00:00:00 +01:00
Andrei-Valentin Miloiu 81ebd7e162 [SHELL32] Update Romanian (ro-RO) translation (#8385) 2025-10-13 20:55:06 +02:00
Whindmar Saksit 3d70478560 [SHELL32] Implement the RunAs dialog and verb (#5787)
Implements the "run as another user" part.
2025-09-10 15:21:04 +02:00
Whindmar Saksit 69df57245c [SHELL32] Fix CompareIDs DISK_CAPACITY (#8376)
Addendum to PR #8361

CORE-20286
2025-09-09 17:52:40 +02:00
Hermès Bélusca-Maïto 1499e7ef53 [MSGINA] Improve Security and Shutdown dialog features (#8372)
- Respect system policies for showing or hiding:

  * Security dialog "Lock Workstation", "Log Off", "Shut Down",
    "Change Password", "Task Manager" buttons;

  * "Log Off" entry in the Shutdown dialog;

- Disable the "Shut Down" Security dialog button, and the "Stand by",
  "Shut down" entries in the Shutdown dialog, if the logged user
  doesn't have the SeShutdownPrivilege.

- Add other missing `WLX_SHUTDOWN_STATE_*` shutdown flags that are
  supported by Windows.

- Improve the retrieval of shutdown options to be displayed in the
  "Shut Down" dialog. In particular, don't hardcode any sort of
  defaults, but let them come from what the user can do (Is logoff
  allowed? Does (s)he have the rights to shutdown/reboot? etc.).
  If no shutdown options are available, then simply don't display
  the dialog!

- Don't hardcode the default selected shutdown option. Either it comes
  from the user's registry and is valid (i.e. corresponds to an existing
  shutdown option in the dialog), otherwise, fall back to the first
  option in the dialog.

  In particular this means:
  * when opening the "Shut Down" dialog from the C-A-D Security
    dialog, by default we will select the "Log Off" option, or
    whatever the user last selected;
  * when opening the dialog from the "Turn Off" Start Menu item, default
    to the "Shut down" option, or whatever the user last selected.
  * when opening the dialog from the C-A-D "Log On" dialog (no user
    is logged in), the "Shut down" option will also be selected, or
    whatever the system operator last selected.

- For the shell-invokable `ShellShutdownDialog()` function, implement
  support for using a custom display user name, or the one in the
  `"Logon User Name"` registry value saved by `WlxActivateUserShell()`.
  Plus, the 3rd parameter specifies the list of shutdown options to
  *exclude* from the options list.
2025-09-04 22:57:23 +02:00
Whindmar Saksit 87df3ea3e1 [SHLWAPI][EXPLORER] Implement OS_SERVERADMINUI (#7051)
OS_SERVERADMINUI changes minor things in Explorer, the most visible is that the default folder view mode changes from large icons to details
2025-09-04 19:25:43 +02:00
Whindmar Saksit 4dc61a2518 [SHELL32] Computer folder sorting must handle mixed drives and regitems (#8361)
CORE-20286
2025-09-01 17:38:36 +02:00
Hermès Bélusca-Maïto d537052196 [MSGINA][SHELL32] Make the minimal shutdown and logoff dialogs handle WM_ACTIVATE similarly (#8334)
Fix also the `LOGOFF_DLG_CONTEXT Context` in `shell32!LogoffWindowsDialog()`
not being initialized to default values.
2025-08-14 17:56:43 +02:00