reactos/base/applications
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
..
atactl
cacls
calc [CALCULATOR] Update Romanian (ro-RO) translation (#6362) 2024-01-15 22:20:50 +01:00
charmap [CHARMAP] BM_CLICK's wParam must be zero 2023-12-16 10:33:03 +09:00
charmap_new
clipbrd [CLIPBRD] Update Romanian (ro-RO) translation (#5909) 2023-11-08 20:01:58 +01:00
cmdutils [MORE] Update Romanian (ro-RO) translation (#6259) 2024-01-15 21:53:42 +01:00
control [SHELL32][CONTROL] Added basic IOpenControlPanel support (#6248) 2024-01-17 17:07:21 +01:00
ctfmon [CTFMON][MSCTFIME][SDK] Define new(cicNoThrow) and use it (#6286) 2024-01-03 16:45:23 +09:00
drwtsn32 [TRANSLATION] Add/Update Turkish (tr-TR) translations (#4959) 2023-02-15 17:29:52 +01:00
dxdiag [DXDIAG] Update Romanian (ro-RO) translation (#6085) 2023-12-09 20:21:06 +01:00
extrac32
findstr [REACTOS] "http://www.reactos" -> "https://reactos" (#5043) 2023-02-06 17:01:52 +03:00
fltmc [FLTMC] Update Romanian (ro-RO) translation (#5956) 2023-11-15 10:57:50 +01:00
fontview [FONTVIEW] Update Romanian (ro-RO) translation (#6245) 2024-01-06 22:24:12 +01:00
games [WINMINE] Update Romanian (ro-RO) translation (#6363) 2024-01-15 22:20:27 +01:00
hh [HH] Check LoadLibrary and GetProcAddress return value (#6082) 2023-12-03 08:15:08 +07:00
iexplore [IEXPLORE][INF] Follow-up of 76b25a7 2023-11-27 21:19:05 +09:00
kbswitch [KBSWITCH] Update layout list on WM_NOTIFYICONMSG 2023-10-30 10:40:27 +09:00
logoff [REACTOS] "http://www.reactos" -> "https://reactos" (#5043) 2023-02-06 17:01:52 +03:00
magnify [MAGNIFY] Update Romanian (ro-RO) translation (#6095) 2023-12-09 20:15:19 +01:00
mmc [MMC] Update Romanian (ro-RO) translation (#5912) 2023-11-08 10:26:33 +00:00
mplay32 [REACTOS] Do not free shared icon for ShellAbout() calls (#5519) 2023-08-09 11:53:13 +02:00
msconfig [REACTOS] Omit "aka" for the authors' nicknames 2023-12-03 22:08:20 +03:00
msconfig_new [MSCONFIG_NEW] Update Romanian (ro-RO) translation (#6299) 2024-01-09 11:03:37 +01:00
mscutils [EVENTVWR] Improve Japanese (ja-JP) translation 2023-12-16 12:42:58 +09:00
mshta
mspaint [MSPAINT] Update Romanian (ro-RO) translation (#6364) 2024-01-15 22:05:02 +01:00
mstsc [MSTSC] Update Romanian (ro-RO) translation (#5959) 2023-11-14 14:00:32 +00:00
network [IPCONFIG] Update Romanian (ro-RO) translation (#6294) 2024-01-09 11:05:01 +01:00
notepad [NOTEPAD] Update Romanian (ro-RO) translation (#5981) 2023-11-15 10:51:38 +01:00
osk Revert my last commits that break build. 2023-11-23 17:20:47 +01:00
rapps [RAPPS] Don't download database at startup if appwiz mode (#6319) 2024-01-10 11:36:30 +09:00
rapps_com
regedit [REGEDIT] Update Romanian (ro-RO) translation (#6223) 2024-01-06 22:18:17 +01:00
regedt32
runas [TRANSLATION] Add/Update Turkish (tr-TR) translations (#4959) 2023-02-15 17:29:52 +01:00
sc
screensavers [LOGON] Several improvements for screensaver (#5641) 2023-09-03 21:18:23 +02:00
sdbinst
setup16
shutdown [SHUTDOWN] Update Romanian (ro-RO) translation (#6264) 2024-01-06 22:47:08 +01:00
sndrec32 [SNDREC32] Update Romanian (ro-RO) translation (#5916) 2023-11-08 20:04:46 +01:00
sndvol32 [REACTOS] Omit "aka" for the authors' nicknames 2023-12-03 22:08:20 +03:00
taskmgr [TASKMGR] RC trivia el-GR.rc pt-BR.rc pt-PT.rc ru-RU.rc sv-SE.rc (#6097) 2023-12-03 21:35:01 +00:00
utilman [SERVICES][SETUPLIB][UMANDLG][USETUP] Add missing \n to DPRINT() calls (#5983) 2023-11-16 22:22:12 +00:00
winhlp32 [WINHLP32] Don't show file path in title (#6250) 2023-12-29 21:16:20 +09:00
winver
wordpad [WORDPAD] Update Romanian (ro-RO) translation (#5917) 2023-11-08 20:04:18 +01:00
write [WORDPAD][WRITE] Remove redundant pragma code_page(65001)... 2023-03-09 00:13:59 +01:00
wusa
CMakeLists.txt [CTFMON][SDK] Add ctfmon.exe (#6149) 2023-12-13 21:37:15 +09:00