reactos/dll
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
..
3rdparty [LIBPNG] Update to version 1.6.39. CORE-18670 2022-11-27 10:10:53 -05:00
apisets [APISETS] Forward _seh_longjmp_unwind4() to msvcrt (#6176) 2023-12-17 22:19:00 +01:00
appcompat [APPHELP] Stop shimeng being initialized multiple times 2022-10-26 20:19:31 +02:00
cpl [TRANSLATION] Improve Portuguese (pt-PT) translation (#6171) 2024-01-17 16:07:21 +01:00
directx [DSOUND_NEW][HDAUDBUS] Replace meaningless YDEBUG (#5857) 2023-11-01 13:39:05 +01:00
ime [MSCTFIME][MSUTB][SDK] cicuif.h: Add CUIFButton (#6320) 2024-01-09 16:57:30 +09:00
keyboard [KEYBOARD] Fix problems in our keyboard layouts 2022-10-05 21:28:15 +03:00
nls [FORMATTING] Remove trailing whitespace. Addendum to 34593d93. 2021-09-13 03:52:22 +02:00
np [REACTOS] Explicitly link against pseh & include pseh headers in a few places 2021-04-28 13:10:23 +02:00
ntdll [LDR][NDK] Fix inconsistent Cookie type (#6188) 2023-12-23 22:13:47 +01:00
opengl [MESA] Change reported OpenGL version to 1.1.0 (#5675) 2023-09-09 22:30:44 +03:00
shellext [SENDMAIL] Update Romanian (ro-RO) translation (#6353) 2024-01-15 21:59:19 +01:00
win32 [SHELL32][CONTROL] Added basic IOpenControlPanel support (#6248) 2024-01-17 17:07:21 +01:00
CMakeLists.txt [MSCTFIME][SDK][USER32] Add msctfime.ime (stub) (#6141) 2023-12-11 22:37:25 +09:00