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;
}