diff --git a/reactos/base/applications/msconfig/lang/bg-BG.rc b/reactos/base/applications/msconfig/lang/bg-BG.rc index d859fff4576..54c282d58aa 100644 --- a/reactos/base/applications/msconfig/lang/bg-BG.rc +++ b/reactos/base/applications/msconfig/lang/bg-BG.rc @@ -158,7 +158,7 @@ BEGIN IDS_TOOLS_SYSDM_NAME "Ñâîéñòâà íà ñèñòåìàòà" IDS_TOOLS_SYSDM_DESCR "Äàâà ñâåäåíèÿ çàêîìïþòúðà." - IDS_TOOLS_SYSDM_CMD "control" + IDS_TOOLS_SYSDM_CMD "control.exe" IDS_TOOLS_SYSDM_PARAM "sysdm.cpl" IDS_STARTUP_COLUMN_ELEMENT "Ïðåäìåò" diff --git a/reactos/base/applications/msconfig/lang/ca-ES.rc b/reactos/base/applications/msconfig/lang/ca-ES.rc index 4591960e973..4e2446cc991 100644 --- a/reactos/base/applications/msconfig/lang/ca-ES.rc +++ b/reactos/base/applications/msconfig/lang/ca-ES.rc @@ -157,7 +157,7 @@ BEGIN IDS_TOOLS_SYSDM_NAME "Propietats del sistema" IDS_TOOLS_SYSDM_DESCR "Mostra la informacio d'aquest ordinador." - IDS_TOOLS_SYSDM_CMD "control" + IDS_TOOLS_SYSDM_CMD "control.exe" IDS_TOOLS_SYSDM_PARAM "sysdm.cpl" IDS_STARTUP_COLUMN_ELEMENT "Element" diff --git a/reactos/base/applications/msconfig/lang/cs-CZ.rc b/reactos/base/applications/msconfig/lang/cs-CZ.rc index aed880ac48e..abc359534ac 100644 --- a/reactos/base/applications/msconfig/lang/cs-CZ.rc +++ b/reactos/base/applications/msconfig/lang/cs-CZ.rc @@ -157,7 +157,7 @@ BEGIN IDS_TOOLS_SYSDM_NAME "Systém" IDS_TOOLS_SYSDM_DESCR "Zobrazí informace o systému." - IDS_TOOLS_SYSDM_CMD "control" + IDS_TOOLS_SYSDM_CMD "control.exe" IDS_TOOLS_SYSDM_PARAM "sysdm.cpl" IDS_STARTUP_COLUMN_ELEMENT "Položka" diff --git a/reactos/base/applications/msconfig/lang/de-DE.rc b/reactos/base/applications/msconfig/lang/de-DE.rc index f85b6df0c8a..b78ca0b5b42 100644 --- a/reactos/base/applications/msconfig/lang/de-DE.rc +++ b/reactos/base/applications/msconfig/lang/de-DE.rc @@ -158,7 +158,7 @@ BEGIN IDS_TOOLS_SYSDM_NAME "Systemeigenschaften" IDS_TOOLS_SYSDM_DESCR "Zeigt Informationen über diesen Rechner an." - IDS_TOOLS_SYSDM_CMD "control" + IDS_TOOLS_SYSDM_CMD "control.exe" IDS_TOOLS_SYSDM_PARAM "sysdm.cpl" IDS_STARTUP_COLUMN_ELEMENT "Element" diff --git a/reactos/base/applications/msconfig/lang/el-GR.rc b/reactos/base/applications/msconfig/lang/el-GR.rc index d3b5acae845..e0ea66bd556 100644 --- a/reactos/base/applications/msconfig/lang/el-GR.rc +++ b/reactos/base/applications/msconfig/lang/el-GR.rc @@ -157,7 +157,7 @@ BEGIN IDS_TOOLS_SYSDM_NAME "Éäéüôçôåò óõóôÞìáôïò" IDS_TOOLS_SYSDM_DESCR "Åìöáíßæåé ðëçñïöïñßåò ãéá áõôüí ôïí õðïëïãéóôÞ." - IDS_TOOLS_SYSDM_CMD "control" + IDS_TOOLS_SYSDM_CMD "control.exe" IDS_TOOLS_SYSDM_PARAM "sysdm.cpl" IDS_STARTUP_COLUMN_ELEMENT "Element" diff --git a/reactos/base/applications/msconfig/lang/en-US.rc b/reactos/base/applications/msconfig/lang/en-US.rc index 6d9cb2b177e..65e56ca43f5 100644 --- a/reactos/base/applications/msconfig/lang/en-US.rc +++ b/reactos/base/applications/msconfig/lang/en-US.rc @@ -157,7 +157,7 @@ BEGIN IDS_TOOLS_SYSDM_NAME "System properties" IDS_TOOLS_SYSDM_DESCR "Shows information about this computer." - IDS_TOOLS_SYSDM_CMD "control" + IDS_TOOLS_SYSDM_CMD "control.exe" IDS_TOOLS_SYSDM_PARAM "sysdm.cpl" IDS_STARTUP_COLUMN_ELEMENT "Element" diff --git a/reactos/base/applications/msconfig/lang/fr-FR.rc b/reactos/base/applications/msconfig/lang/fr-FR.rc index d3ae21c6859..6d95f1ba1f2 100644 --- a/reactos/base/applications/msconfig/lang/fr-FR.rc +++ b/reactos/base/applications/msconfig/lang/fr-FR.rc @@ -157,7 +157,7 @@ BEGIN IDS_TOOLS_SYSDM_NAME "Propriétés système" IDS_TOOLS_SYSDM_DESCR "Affiche/modifie des information à propos de l'ordinateur." - IDS_TOOLS_SYSDM_CMD "control" + IDS_TOOLS_SYSDM_CMD "control.exe" IDS_TOOLS_SYSDM_PARAM "sysdm.cpl" IDS_STARTUP_COLUMN_ELEMENT "Elément" diff --git a/reactos/base/applications/msconfig/lang/hu-HU.rc b/reactos/base/applications/msconfig/lang/hu-HU.rc index a6c26553f6a..a518a74d58e 100644 --- a/reactos/base/applications/msconfig/lang/hu-HU.rc +++ b/reactos/base/applications/msconfig/lang/hu-HU.rc @@ -159,7 +159,7 @@ BEGIN IDS_TOOLS_SYSDM_NAME "Rendszertulajdonságok" IDS_TOOLS_SYSDM_DESCR "Megjeleníti a számítógép információkat." - IDS_TOOLS_SYSDM_CMD "control" + IDS_TOOLS_SYSDM_CMD "control.exe" IDS_TOOLS_SYSDM_PARAM "sysdm.cpl" IDS_STARTUP_COLUMN_ELEMENT "Element" diff --git a/reactos/base/applications/msconfig/lang/id-ID.rc b/reactos/base/applications/msconfig/lang/id-ID.rc index f5a8f1b2dfd..24d6b06071a 100644 --- a/reactos/base/applications/msconfig/lang/id-ID.rc +++ b/reactos/base/applications/msconfig/lang/id-ID.rc @@ -157,7 +157,7 @@ BEGIN IDS_TOOLS_SYSDM_NAME "Properti Sistem" IDS_TOOLS_SYSDM_DESCR "Menampilkan informasi mengenai komputer ini." - IDS_TOOLS_SYSDM_CMD "control" + IDS_TOOLS_SYSDM_CMD "control.exe" IDS_TOOLS_SYSDM_PARAM "sysdm.cpl" IDS_STARTUP_COLUMN_ELEMENT "Elemen" diff --git a/reactos/base/applications/msconfig/lang/it-IT.rc b/reactos/base/applications/msconfig/lang/it-IT.rc index 03f0d3279d8..cb7f7ade0dd 100644 --- a/reactos/base/applications/msconfig/lang/it-IT.rc +++ b/reactos/base/applications/msconfig/lang/it-IT.rc @@ -157,7 +157,7 @@ BEGIN IDS_TOOLS_SYSDM_NAME "Proprietà del sistema" IDS_TOOLS_SYSDM_DESCR "Mostra informazioni su questo pc." - IDS_TOOLS_SYSDM_CMD "control" + IDS_TOOLS_SYSDM_CMD "control.exe" IDS_TOOLS_SYSDM_PARAM "sysdm.cpl" IDS_STARTUP_COLUMN_ELEMENT "Elemento" diff --git a/reactos/base/applications/msconfig/lang/nb-NO.rc b/reactos/base/applications/msconfig/lang/nb-NO.rc index 6f6ee5de0ff..933d5d998d3 100644 --- a/reactos/base/applications/msconfig/lang/nb-NO.rc +++ b/reactos/base/applications/msconfig/lang/nb-NO.rc @@ -157,7 +157,7 @@ BEGIN IDS_TOOLS_SYSDM_NAME "System egenskaper" IDS_TOOLS_SYSDM_DESCR "Vis informasjon om denne datamaskinen." - IDS_TOOLS_SYSDM_CMD "kontroll" + IDS_TOOLS_SYSDM_CMD "control.exe" IDS_TOOLS_SYSDM_PARAM "sysdm.cpl" IDS_STARTUP_COLUMN_ELEMENT "Element" diff --git a/reactos/base/applications/msconfig/lang/nl-NL.rc b/reactos/base/applications/msconfig/lang/nl-NL.rc index a4cccf0d27e..6ef837f30e4 100644 --- a/reactos/base/applications/msconfig/lang/nl-NL.rc +++ b/reactos/base/applications/msconfig/lang/nl-NL.rc @@ -177,7 +177,7 @@ BEGIN IDS_TOOLS_SYSDM_NAME "Systeemeigenschappen" IDS_TOOLS_SYSDM_DESCR "Toont informatie over deze computer" - IDS_TOOLS_SYSDM_CMD "control" + IDS_TOOLS_SYSDM_CMD "control.exe" IDS_TOOLS_SYSDM_PARAM "sysdm.cpl" IDS_STARTUP_COLUMN_ELEMENT "Element" diff --git a/reactos/base/applications/msconfig/lang/pl-PL.rc b/reactos/base/applications/msconfig/lang/pl-PL.rc index b4f1a602da1..cdc104c0234 100644 --- a/reactos/base/applications/msconfig/lang/pl-PL.rc +++ b/reactos/base/applications/msconfig/lang/pl-PL.rc @@ -163,7 +163,7 @@ BEGIN IDS_TOOLS_SYSDM_NAME "W³aœciwoœci systemu" IDS_TOOLS_SYSDM_DESCR "Pokazuje informacje o tym komputerze." - IDS_TOOLS_SYSDM_CMD "control" + IDS_TOOLS_SYSDM_CMD "control.exe" IDS_TOOLS_SYSDM_PARAM "sysdm.cpl" IDS_STARTUP_COLUMN_ELEMENT "Element" diff --git a/reactos/base/applications/msconfig/lang/pt-BR.rc b/reactos/base/applications/msconfig/lang/pt-BR.rc index 4bf8f777436..845967a2483 100644 --- a/reactos/base/applications/msconfig/lang/pt-BR.rc +++ b/reactos/base/applications/msconfig/lang/pt-BR.rc @@ -163,7 +163,7 @@ BEGIN IDS_TOOLS_SYSDM_NAME "Propriedades do sistema" IDS_TOOLS_SYSDM_DESCR "Mostra informações sobre este computador." - IDS_TOOLS_SYSDM_CMD "control" + IDS_TOOLS_SYSDM_CMD "control.exe" IDS_TOOLS_SYSDM_PARAM "sysdm.cpl" IDS_STARTUP_COLUMN_ELEMENT "Item de inicialização" diff --git a/reactos/base/applications/msconfig/lang/ru-RU.rc b/reactos/base/applications/msconfig/lang/ru-RU.rc index 86670fc6110..a32e63fa8e6 100644 --- a/reactos/base/applications/msconfig/lang/ru-RU.rc +++ b/reactos/base/applications/msconfig/lang/ru-RU.rc @@ -159,7 +159,7 @@ BEGIN IDS_TOOLS_SYSDM_NAME "Íàñòðîéêè ñèñòåìû" IDS_TOOLS_SYSDM_DESCR "Ïîêàçàòü èíôîðìàöèþ îá ýòîì êîìïüþòåðå." - IDS_TOOLS_SYSDM_CMD "control" + IDS_TOOLS_SYSDM_CMD "control.exe" IDS_TOOLS_SYSDM_PARAM "sysdm.cpl" IDS_STARTUP_COLUMN_ELEMENT "Ýëåìåíò" diff --git a/reactos/base/applications/msconfig/lang/th-TH.rc b/reactos/base/applications/msconfig/lang/th-TH.rc index 1905c904c22..c0aa0189276 100644 --- a/reactos/base/applications/msconfig/lang/th-TH.rc +++ b/reactos/base/applications/msconfig/lang/th-TH.rc @@ -177,7 +177,7 @@ BEGIN IDS_TOOLS_SYSDM_NAME "¤Ø³ÊÁºÑµÔ¢Í§Ãкº" IDS_TOOLS_SYSDM_DESCR "áÊ´§¢éÍÁÙÅà¡ÕèÂǡѺ¤ÍÁ¾ÔÇàµÍÃì¹Õé" - IDS_TOOLS_SYSDM_CMD "Êèǹ¤Çº¤ØÁ" + IDS_TOOLS_SYSDM_CMD "control.exe" IDS_TOOLS_SYSDM_PARAM "sysdm.cpl" IDS_STARTUP_COLUMN_ELEMENT "Êèǹ»ÃСͺ" diff --git a/reactos/base/applications/msconfig/lang/uk-UA.rc b/reactos/base/applications/msconfig/lang/uk-UA.rc index b0091b7cae1..98a3274dcff 100644 --- a/reactos/base/applications/msconfig/lang/uk-UA.rc +++ b/reactos/base/applications/msconfig/lang/uk-UA.rc @@ -165,7 +165,7 @@ BEGIN IDS_TOOLS_SYSDM_NAME "Âëàñòèâîñò³ ñèñòåìè" IDS_TOOLS_SYSDM_DESCR "Ïîêàçóº ³íôîðìàö³þ ïðî êîìï'þòåð." - IDS_TOOLS_SYSDM_CMD "control" + IDS_TOOLS_SYSDM_CMD "control.exe" IDS_TOOLS_SYSDM_PARAM "sysdm.cpl" IDS_STARTUP_COLUMN_ELEMENT "Åëåìåíò" diff --git a/reactos/base/applications/msconfig/lang/zh-CN.rc b/reactos/base/applications/msconfig/lang/zh-CN.rc index eed8b35294b..0a24f7410b4 100644 --- a/reactos/base/applications/msconfig/lang/zh-CN.rc +++ b/reactos/base/applications/msconfig/lang/zh-CN.rc @@ -177,7 +177,7 @@ BEGIN IDS_TOOLS_SYSDM_NAME "ϵͳÊôÐÔ" IDS_TOOLS_SYSDM_DESCR "ÏÔʾÕą̂¼ÆËã»úµÄÊôÐÔ" - IDS_TOOLS_SYSDM_CMD "control" + IDS_TOOLS_SYSDM_CMD "control.exe" IDS_TOOLS_SYSDM_PARAM "sysdm.cpl" IDS_STARTUP_COLUMN_ELEMENT "Æô¶¯ÏîÄ¿" diff --git a/reactos/base/applications/msconfig/msconfig.rbuild b/reactos/base/applications/msconfig/msconfig.rbuild index cb40dd724cd..33c972dc681 100644 --- a/reactos/base/applications/msconfig/msconfig.rbuild +++ b/reactos/base/applications/msconfig/msconfig.rbuild @@ -12,6 +12,7 @@ version comctl32 shell32 + shlwapi toolspage.c srvpage.c diff --git a/reactos/base/applications/msconfig/precomp.h b/reactos/base/applications/msconfig/precomp.h index d7e9be8abb2..38e23f79e1c 100644 --- a/reactos/base/applications/msconfig/precomp.h +++ b/reactos/base/applications/msconfig/precomp.h @@ -4,6 +4,8 @@ #include #include #include +#include +#include #include "resource.h" #include "msconfig.h" diff --git a/reactos/base/applications/msconfig/toolspage.c b/reactos/base/applications/msconfig/toolspage.c index e25738ca76c..3f5d819f33f 100644 --- a/reactos/base/applications/msconfig/toolspage.c +++ b/reactos/base/applications/msconfig/toolspage.c @@ -13,13 +13,14 @@ HWND hToolsPage; HWND hToolsListCtrl; HWND hToolsDialog; -void AddItem ( DWORD, DWORD, DWORD, DWORD ); +void AddItem ( DWORD, DWORD, DWORD, DWORD, int ); void FillListView ( void ); DWORD ListItems_Cmds[20]; DWORD ListItems_Params[20]; +DWORD ListItems_Locations[20]; -void AddItem ( DWORD name_id, DWORD descr_id, DWORD cmd_id , DWORD param_id ) { +void AddItem ( DWORD name_id, DWORD descr_id, DWORD cmd_id , DWORD param_id, int csidl ) { TCHAR szTemp[256]; LV_ITEM item; @@ -34,6 +35,7 @@ void AddItem ( DWORD name_id, DWORD descr_id, DWORD cmd_id , DWORD param_id ) { ListItems_Cmds[item.iItem] = cmd_id; ListItems_Params[item.iItem] = param_id; + ListItems_Locations[item.iItem] = csidl; LoadString(hInst, descr_id, szTemp, 256); item.pszText = szTemp; @@ -42,21 +44,24 @@ void AddItem ( DWORD name_id, DWORD descr_id, DWORD cmd_id , DWORD param_id ) { } void FillListView ( void ) { - AddItem(IDS_TOOLS_CMD_NAME, IDS_TOOLS_CMD_DESCR, IDS_TOOLS_CMD_CMD, IDS_TOOLS_CMD_PARAM); - AddItem(IDS_TOOLS_REGEDIT_NAME, IDS_TOOLS_REGEDIT_DESCR, IDS_TOOLS_REGEDIT_CMD,IDS_TOOLS_REGEDIT_PARAM); - AddItem(IDS_TOOLS_SYSDM_NAME, IDS_TOOLS_SYSDM_DESCR, IDS_TOOLS_SYSDM_CMD, IDS_TOOLS_SYSDM_PARAM); - AddItem(IDS_TOOLS_INFO_NAME, IDS_TOOLS_INFO_DESCR, IDS_TOOLS_INFO_CMD, IDS_TOOLS_INFO_PARAM); + AddItem(IDS_TOOLS_CMD_NAME, IDS_TOOLS_CMD_DESCR, IDS_TOOLS_CMD_CMD, IDS_TOOLS_CMD_PARAM, CSIDL_SYSTEM); + AddItem(IDS_TOOLS_REGEDIT_NAME, IDS_TOOLS_REGEDIT_DESCR, IDS_TOOLS_REGEDIT_CMD,IDS_TOOLS_REGEDIT_PARAM, CSIDL_WINDOWS); + AddItem(IDS_TOOLS_SYSDM_NAME, IDS_TOOLS_SYSDM_DESCR, IDS_TOOLS_SYSDM_CMD, IDS_TOOLS_SYSDM_PARAM, CSIDL_SYSTEM); + AddItem(IDS_TOOLS_INFO_NAME, IDS_TOOLS_INFO_DESCR, IDS_TOOLS_INFO_CMD, IDS_TOOLS_INFO_PARAM, CSIDL_SYSTEM); } INT_PTR CALLBACK ToolsPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { LV_COLUMN column; - TCHAR szTemp[256]; + TCHAR szTemp[MAX_PATH*2]; TCHAR szTemp2[256]; + TCHAR * Ptr = NULL; LPNMITEMACTIVATE lpnmitem; LPNMHDR nmh; DWORD dwStyle; + PROCESS_INFORMATION pi; + STARTUPINFO si; switch (message) { @@ -96,9 +101,27 @@ ToolsPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { if (ListView_GetSelectionMark(hToolsListCtrl) != -1) { - LoadString(hInst, ListItems_Cmds[ListView_GetSelectionMark(hToolsListCtrl)], szTemp, 256); + if (SHGetSpecialFolderPath(NULL, szTemp, ListItems_Locations[ListView_GetSelectionMark(hToolsListCtrl)], FALSE)) + Ptr = PathAddBackslash(szTemp); + + if (!Ptr) + Ptr = szTemp; + + szTemp2[0] = _T('\0'); + LoadString(hInst, ListItems_Cmds[ListView_GetSelectionMark(hToolsListCtrl)], Ptr, 256); LoadString(hInst, ListItems_Params[ListView_GetSelectionMark(hToolsListCtrl)], szTemp2, 256); - ShellExecute(0, _T("open"), szTemp, szTemp2, _T(""), SW_NORMAL); + if (_tcslen(szTemp2)) + { + _tcscat(szTemp, _T(" ")); + _tcscat(Ptr, szTemp2); + } + ZeroMemory(&si, sizeof(STARTUPINFO)); + si.cb = sizeof(STARTUPINFO); + if (CreateProcess(NULL, szTemp, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) + { + CloseHandle(pi.hThread); + CloseHandle(pi.hProcess); + } } } } @@ -117,6 +140,7 @@ ToolsPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) if (lpnmitem->iItem > -1) { LoadString(hInst, ListItems_Cmds[lpnmitem->iItem], szTemp, 256); + szTemp2[0] = _T('\0'); LoadString(hInst, ListItems_Params[lpnmitem->iItem], szTemp2, 256); _tcscat(szTemp, _T(" ")); _tcscat(szTemp, szTemp2); @@ -129,9 +153,27 @@ ToolsPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) lpnmitem = (LPNMITEMACTIVATE) lParam; if (lpnmitem->iItem > -1) { - LoadString(hInst, ListItems_Cmds[lpnmitem->iItem], szTemp, 256); + if (SHGetSpecialFolderPath(NULL, szTemp, ListItems_Locations[ListView_GetSelectionMark(hToolsListCtrl)], FALSE)) + Ptr = PathAddBackslash(szTemp); + + if (!Ptr) + Ptr = szTemp; + + szTemp2[0] = _T('\0'); + LoadString(hInst, ListItems_Cmds[lpnmitem->iItem], Ptr, 256); LoadString(hInst, ListItems_Params[lpnmitem->iItem], szTemp2, 256); - ShellExecute(0, _T("open"), szTemp, szTemp2, _T(""), SW_NORMAL); + if (_tcslen(szTemp2)) + { + _tcscat(szTemp, _T(" ")); + _tcscat(Ptr, szTemp2); + } + ZeroMemory(&si, sizeof(STARTUPINFO)); + si.cb = sizeof(STARTUPINFO); + if (CreateProcess(NULL, szTemp, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) + { + CloseHandle(pi.hThread); + CloseHandle(pi.hProcess); + } } break; }