Commit graph

81 commits

Author SHA1 Message Date
Whindmar Saksit d41dec2e07
[SHELL32][CONTROL] Added basic IOpenControlPanel support (#6248)
Add a basic IOpenControlPanel implementation that supports Vista canonical registry names.

Implements `control.exe /name company.name [/page id]` and `IOpenControlPanel`
handling of Vista-style canonical registry names.

The documented `Microsoft.*` names don't work because they are simply not
in our registry but "[Executable Control Panel Items](https://learn.microsoft.com/en-us/windows/win32/shell/how-to-register-an-executable-control-panel-item-registration-)" registered by 3rd-party ISVs
will function correctly in control.exe and the COM API.

Notes:

- `IOpenControlPanel` is implemented in CControlPanelFolder.cpp because
  it is supposed to have tighter integration with that shell folder than
  it does in this PR.

- `IOpenControlPanel` is also supposed to handle .cpl files with canonical
  names registered under [`Extended Properties`](https://learn.microsoft.com/en-us/windows/win32/shell/how-to-register-dll-control-panel-item-registration-#step-3) but the control panel folder
  does not implement `IShellFolder2::GetDetailsEx` yet, so it will have to wait.

- These "Executable Control Panel Items" are also supposed to be displayed
  in the control panel itself but this PR does not address that. The
  `ITEMIDLIST` format for those needs investigation...

- The Wow64 handling is perhaps not correct but it does not matter,
  `ShellExecuteEx` gets to deal with whatever is in the `...\shell\open\command` key.
  `CControlPanelFolder` would have to take more care when it starts
  reading those keys so it knows when to append "(32-bit)" to the display name.

- `%s%s` because .cpl canonical names don't have the `::` prefix according
  to Geoff Chappell.

- Always returns `CPVIEW_CLASSIC` because our `CControlPanelFolder` does
  not support the category view.
2024-01-17 17:07:21 +01:00
Whindmar Saksit 55a5d7a177
[SHELL32] RegFolder must correctly handle GetDisplayNameOf parsing paths (#6265) 2024-01-08 17:02:59 +01:00
Katayama Hirofumi MZ 52bc5f7c5d
[IEXPLORE][IEFRAME][SHELL32] Add Internet icon on Desktop (#5451)
- Add Internet icon on Desktop. You can hide/show
  the icon from Desktop's customization.
- Modify "HKCR\CLSID\%CLSID_Internet%" registry key.
- Add IDS_INTERNET and IDS_INTERNET_DESCRITION into ieframe.dll.
- Modify folders/CDesktopFolder.cpp and folders/CRegFolder.cpp to add the icon.
CORE-18625

Co-authored-by: Stanislav Motylkov <x86corez@gmail.com>
Co-authored-by: Joachim Henze <joachim.henze@reactos.org>
2023-07-22 19:28:37 +09:00
Katayama Hirofumi MZ 62eaad1811
[SHELL32] CD-ROM drive shouldn't be renamed (#5461)
- Add _ILGetDriveType helper function.
- Use _ILGetDrive and GetDriveType functions to determine the drive type.
- If it was a CD-ROM drive, then remove SFGAO_CANRENAME flag.
CORE-18272
2023-07-20 16:53:04 +09:00
Doug Lyons 035790dda5
[SHELL32] Fix detail view in My Computer showing Comment in 'Total Size' column (#5438) CORE-19000
Fixes the regression of 0.4.15-dev-5526-g 4c25af5b
2023-07-15 18:14:35 +02:00
Hermès Bélusca-Maïto 3854a5d8e9
[CODEBASE] Fix "uknown" / "unkown" etc. typos.
Only done in our own code, not in 3rd-party or in PSDK headers
(official ones also have such typos in defines...)

(NOTE: apparent "Uknown" typo in dll/cpl/sysdm/smbios.c is on-purpose:
typo by the manufacturer.)
2023-07-15 14:19:04 +02:00
Doug Lyons 8a7b5a9009
[SHELL32][USER32] Fix icon regression and one test (#5207) 2023-05-21 11:18:00 +02:00
Mark Jansen 4cdcea5e65
[SHELL32] Implement SHQueryRecycleBinW 2023-04-26 22:50:11 +02:00
Egor Ananyin d1718366de
[SHELL32] Read the label for a CD from autorun.inf (#4945)
Some CDs may set a custom label using autorun.inf.
Read the label from the file, and if it succeeds, show it to the user.

CORE-18567
2022-12-20 22:30:09 +03:00
Muthu R Kumar 4c25af5bd4
[SHELL32] Fix detailed list views in Control Panel and Registry Folder
- Add enums for Control Panel and Registry Folder columns
- Fix iColumn values in GetDetailsOf() and fix checks in
  GetDefaultColumnState()

Current CControlPanelFolder::CompareIDs was using wrong lparam column
index. Actual column index should be 1 instead of 4. Because of this
the comment column next to name in details view was not being displayed
correctly. The same fixes for CRegFolder class functions.

PR #4944. CORE-18743 CORE-18501
2022-12-20 18:42:07 +03:00
Thamatip Chitpong 7ca2710d64
[SHELL32] Improve "Empty Recycle Bin" sound code (#4927)
Split off from PR #4755. This change doesn't require WINMM fixes (#4635).

- Remove `MAX_PATH` limit
- Use ATL classes
- Play the sound asynchronously
2022-12-09 23:14:09 +03:00
Thamatip Chitpong f0c20caf32
[SHELL32] Fix My Documents properties (#4906)
Tell the caller to run default action by returning S_FALSE in else case.

CORE-17509
2022-12-09 16:00:24 +03:00
Jose Carlos Jesus 685728bc24
[SHELL32] Prevent a second call to Drive Properties dialog (#4888)
CDefaultContextMenu::DoProperties provides a fallback call
to the property sheet testing the return value of the _DoCallback method,
which is ultimately the return value of SH_ShowDriveProperties().

SH_ShowDriveProperties() sometimes returns an HRESULT, however it is marked
as returning a BOOL. Then, DrivesContextMenuCallback() always handles this
result as an HRESULT.

Fix SH_ShowDriveProperties() to always return a BOOL as it is intended,
and in DrivesContextMenuCallback() handle the result accordingly.

CORE-18537
2022-11-20 21:10:11 +03:00
Stanislav Motylkov a09e903398
[SHELL32] CDrivesFolder: Unhardcode pqcminfo->idCmdFirst value
DFM_MERGECONTEXTMENU handler works better now. However there is difference
between ours and Windows' menu building systems, which has to be fixed.

Addendum to 64657051c3. CORE-13841 CORE-18577
2022-11-14 21:56:01 +03:00
Joachim Henze a33fe38418
[SHELL32] Show 'comment' column for folders, make it rightmost CORE-18615 (#4868)
In explorer filebrowser 'details' view
the column 'comments' had invalid length of zero, and therefore
was hidden under the 'attributes' column.

I guess even after this patch, it will not display any
sane contents in there yet.
Therefore I chose a small width of 10 only, to reduce the chance for
it to trigger an undesired horizontal scrollbar.

As far as I see we don't support manual showing and hiding of additional columns yet.
By default my Windows does not show this column. But when activated manually, it is always
shown on the right hand side of the 'attributes' column.
2022-11-11 18:25:50 +01:00
Mark Jansen 5bd86b8487
[SHELL32] Fix menu item handling
This restores the 'properties' functionality on the desktop
Bug found by Hervé Poussineau
2022-10-19 19:37:41 +02:00
Mark Jansen 6a1f287820
[SHELL32] Show file / drive properties at the position where the mouse was.
CORE-18386
2022-10-14 21:02:33 +02:00
Thomas Csovcsity 860d3544af
[SHELL32] Folders: Adjust column sequence in details view (#4279)
Adjust column sequence in folder view to match WinXP and Win2k3 order.
CORE-11846
2022-05-05 17:05:18 +02:00
Raymond Czerny e0b9d6d9cd
[SHELL32] CPrinterFolder: Validate string pointers properly. (#4486)
CORE-18174

Check string pointers before determining the length of strings.
2022-05-05 16:24:38 +02:00
Russell Johnson 3e2df36561
[SHELL32] Add multiple status bar parts to the file browser (#4401)
The file browser now has a status bar like Windows Server 2003 does.
This includes the sizes of the files, as well as the location.
In certain folders (Network, Desktop, etc.) the status bar is hidden.

Currently it does not handle this in the same way as Windows Shell does,
however it's a good first step to make it work properly.

CORE-17603

Signed-off-by: Russell Johnson <russell.johnson@superdark.net>
Reviewed-by: Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
Reviewed-by: Mark Jansen <mark.jansen@reactos.org>
Reviewed-by: Hermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>	
Reviewed-by: Giannis Adamopoulos <gadamopoulos@reactos.org>	
Reviewed-by: Stanislav Motylkov <x86corez@gmail.com>
2022-05-03 16:52:23 +03:00
Mark Jansen 6304059721
[SHELL32] Add extra information when encountering an unexpected pidl
In addition, make pdump slightly less unusable
2022-02-22 19:43:05 +01:00
Mark Jansen f6f5490ab4
[SHELL32] ShellExecute: Implement SEE_MASK_INVOKEIDLIST
CORE-18035
Also simplify some error handling by using smart pointers
2022-02-07 20:56:21 +01:00
Jesús Sanz del Rey 9c6f1958d9
[SHELL32] Implement Recycler Bin icons (#4221)
CORE-3938

Icon extraction from the recycle bin was not possible due to the partial absence of IExtractIcon interface support.
Adding it inside the RecycleBinFile's QueryInterface private implementation, and then calling it from CRecycleBin, now allows retrieving and displaying the files' icons.
2022-01-17 00:20:07 +01:00
Jesús Sanz del Rey 47f6745bcd
[SHELL32] Fix folders on recycle bin and adjust the column size (#4234)
CORE-11000

- Now, folders can be sent to recycle bin (fixed a bug inside the implementation).
- Adjust column size of the RecycleBin virtual folder in details mode.
2022-01-11 00:40:25 +01:00
Jesús Sanz del Rey dae6035b3b
[SHELL32] Fix recycle bin handle reference leaking (#4222)
CORE-13730

There was a handle reference leak in the recycler bin and the bin wasn't removing the copied file after restoring it.
Close the handle were the memory leak was and move the file when restoring it.
2022-01-11 00:20:23 +01:00
Hermès Bélusca-Maïto 83be315abf
[SHELL32] Use wide char string literals.
Import parts of Wine commit b215536852dc5a132108db92c90a41c70b738e50
shell32: Use wide char string literals.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-09 22:39:29 +01:00
Katayama Hirofumi MZ f153b52dbb [SHELL32] Use IDI_SHELL_DOCUMENT for broken non-exe icons
CORE-16287
2021-12-24 02:47:31 +09:00
Scott Maday 83335d3a81
[SHELL32] Control panel context menu semantic bugfix (#4078) 2021-11-18 22:41:53 +01:00
Katayama Hirofumi MZ 9078e34f3c
[SHELL32] Don't smartass-renaming on LNK files (#4020)
Renaming .LNK files had a bug that the selection won't include the extension-like filename part.
CORE-17807
2021-10-11 13:33:43 +09:00
Mark Jansen 9276b3f1bf
[SHELL32] CFSFolder: Add fallback for failing shell extension
CORE-17673
2021-09-21 21:42:25 +02:00
Hermès Bélusca-Maïto 9393fc320e
[FORMATTING] Remove trailing whitespace. Addendum to 34593d93.
Excluded: 3rd-party code (incl. wine) and most of the win32ss.
2021-09-13 03:52:22 +02:00
Timo Kreuzer 5d8e834897 [REACTOS] Fix a number of MSVC warnings 2021-07-23 22:03:48 +02:00
Mark Jansen 9fcdc68182
[SHELL32] Include the folder path in logging 2021-05-22 16:34:54 +02:00
Kyle Katarn aad9bb8e8a
[TRANSLATION][SHELL32] Localization of "System Folder" in My Computer types (#3168)
Co-authored-by: Adam Stachowicz <saibamenppl@gmail.com>
Co-authored-by: JoseSanchezz <67137372+JoseSanchezz@users.noreply.github.com>
2020-09-13 23:16:19 +02:00
Joachim Henze 35dbdaaa0e [SHELL32] Fix regression CORE-12364
The sorting in explorer broke by
SVN r73128 == git
24fcf531e7

Thanks to Doug Lyons for providing this patch.
I do intend to port it back into 0.4.14RC.
2020-09-11 02:24:42 +02:00
Joachim Henze f363c27ab4 [SHELL32] Demote 2 noisy goodpath loggings to TRACE CORE-17216
Those 2 did spam heavily when browsing folders with
many .zip files within. Mark Jansen confirmed that
this is good-path-logging and was just forgotten
to be disabled earlier.
2020-08-23 00:35:02 +02:00
Mark Jansen 679c95597c
[SHELL32] Fix sorting on size for big files
CORE-17205
2020-08-17 18:17:24 +02:00
Katayama Hirofumi MZ 1d1bb53321
[SHELL32] Fix regression #2703 CORE-17041 (trial) (#3046)
CORE-17041
2020-08-16 11:16:44 +09:00
Mark Jansen 83a9f71690
[SHELL32] Allow creation of an empty CFileSysEnum
CORE-16908
2020-05-19 20:35:52 +02:00
Mark Jansen f379a29606
[SHELL32] Properly enumerate virtual shell folders (on files) as fake folders
CORE-16908
2020-05-17 17:09:04 +02:00
Mark Jansen b1003ae909
[SHELL32] Update CFileSysEnum to be maintaineable
CORE-16908
2020-05-17 17:09:04 +02:00
Katayama Hirofumi MZ 62e59652a0
[SHELL32] Don't hardcode C: drive again (#2777)
- Avoid buffer overrun.
- Don't hardcode C: drive.
CORE-13235
2020-05-15 16:36:13 +09:00
Katayama Hirofumi MZ 711f631849
[SHELL32] Don't hardcode C: drive (#2768)
CORE-13235
2020-05-11 11:43:07 +09:00
Charles Ambrye e978ec6125
[SHELL32] Return ERROR_INVALID_DRIVE if the drive type is unknown or there is no volume mounted (#2703)
Return ERROR_INVALID_DRIVE if the drive is either unknown or unmounted.
2020-05-09 21:54:15 +09:00
Katayama Hirofumi MZ 1f3cb13fb9
[SHELL32] Distinguish floppy and removable drives (#2645)
Distinguish floppy drive and non-floppy removable drive in icon and description. CORE-10221
2020-05-06 00:35:01 +09:00
Ioannis Adamopoulos 0d077c3068 [SHELL32] CDesktopFolder::GetUIObjectOf: fix crash when requested to create a IID_IContextMenu for 0 items.
* Tests show that we should return a valid object even in this case.
2020-04-20 17:37:03 +03:00
Mark Jansen d2b91deb33 [SHELL32] CMyDocsFolder: Ensure the object can be used without calling Initialize 2020-04-20 17:36:44 +03:00
Katayama Hirofumi MZ bc1519dd87
Shell Folders: Reject invalid characters (#2328)
Reject invalid input filename characters by using shell32!SHLimitInputEdit function and IItemNameLimits interface. Improve SHLimitInputEdit to sanitize paste.
CORE-11701
2020-02-12 09:18:24 +09:00
Katayama Hirofumi MZ 2fad488a85
[SHELL32] Add 'm_' prefix to CFSFolder members (#2129)
CORE-7585
2019-12-05 05:35:25 +09:00
Katayama Hirofumi MZ 5734570a15
[BOOT][SHELL32][INCLUDE] Support 'SuperHidden' files (#2102)
PR #2101 shows desktop.ini files on Desktop. I want to hide them.
- Add "ShowSuperHidden" setting to Explorer.
- Add SHCONTF_INCLUDESUPERHIDDEN flag.
- Support SHCONTF_INCLUDESUPERHIDDEN in Explorer.
CORE-10045
2019-11-29 15:14:18 +09:00