started implementation of msconfig tool
authorChristoph von Wittich <christoph_vw@reactos.org>
Sun, 16 Oct 2005 22:59:45 +0000 (22:59 +0000)
committerChristoph von Wittich <christoph_vw@reactos.org>
Sun, 16 Oct 2005 22:59:45 +0000 (22:59 +0000)
svn path=/trunk/; revision=18504

13 files changed:
reactos/subsys/system/directory.xml
reactos/subsys/system/msconfig/De.rc [new file with mode: 0644]
reactos/subsys/system/msconfig/En.rc [new file with mode: 0644]
reactos/subsys/system/msconfig/msconfig.c [new file with mode: 0644]
reactos/subsys/system/msconfig/msconfig.h [new file with mode: 0644]
reactos/subsys/system/msconfig/msconfig.rc [new file with mode: 0644]
reactos/subsys/system/msconfig/msconfig.xml [new file with mode: 0644]
reactos/subsys/system/msconfig/precomp.h [new file with mode: 0644]
reactos/subsys/system/msconfig/resource.h [new file with mode: 0644]
reactos/subsys/system/msconfig/srvpage.c [new file with mode: 0644]
reactos/subsys/system/msconfig/srvpage.h [new file with mode: 0644]
reactos/subsys/system/msconfig/toolspage.c [new file with mode: 0644]
reactos/subsys/system/msconfig/toolspage.h [new file with mode: 0644]

index e231a12..63e8095 100644 (file)
@@ -32,6 +32,9 @@
 <directory name="lsass">
        <xi:include href="lsass/lsass.xml" />
 </directory>
+<directory name="msconfig">
+       <xi:include href="msconfig/msconfig.xml" />
+</directory>
 <directory name="msiexec">
        <xi:include href="msiexec/msiexec.xml" />
 </directory>
diff --git a/reactos/subsys/system/msconfig/De.rc b/reactos/subsys/system/msconfig/De.rc
new file mode 100644 (file)
index 0000000..c9524b1
--- /dev/null
@@ -0,0 +1,71 @@
+LANGUAGE LANG_GERMAN, SUBLANG_GERMAN\r
+\r
+IDD_MSCONFIG_DIALOG DIALOG DISCARDABLE  0, 0, 378, 220\r
+STYLE DS_CENTER | WS_MINIMIZEBOX | WS_POPUP |\r
+    WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU |\r
+    WS_THICKFRAME\r
+CAPTION "Systemkonfigurationsprogramm"\r
+FONT 8, "Tahoma"\r
+BEGIN\r
+    CONTROL "Tab1",IDC_TAB,"SysTabControl32",WS_TABSTOP,2,2,374,195\r
+    DEFPUSHBUTTON "OK", IDOK, 211, 201, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP\r
+    PUSHBUTTON "&Hilfe", IDC_BTN_HELP, 2, 201, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP\r
+    PUSHBUTTON "Abbrechen", IDCANCEL, 267, 201, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP\r
+    PUSHBUTTON "Ü&bernehmen", IDC_BTN_APPLY, 323, 201, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP\r
+END\r
+\r
+IDD_TOOLS_PAGE DIALOG DISCARDABLE  0, 0, 362, 175\r
+STYLE DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN\r
+FONT 8, "Tahoma"\r
+BEGIN\r
+    CONTROL "List2",IDC_TOOLS_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 2, 1, 360, 134\r
+    EDITTEXT IDC_TOOLS_CMDLINE, 1, 139, 360, 12, ES_READONLY\r
+    PUSHBUTTON "&Ausführen", IDC_BTN_RUN, 311, 155, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP\r
+END\r
+\r
+IDD_SERVICES_PAGE DIALOG DISCARDABLE  0, 0, 362, 175\r
+STYLE DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN\r
+FONT 8, "Tahoma"\r
+BEGIN\r
+    CONTROL "List1",IDC_SERVICES_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 2, 1, 360, 168\r
+END\r
+\r
+STRINGTABLE DISCARDABLE\r
+BEGIN\r
+    IDS_TAB_GENERAL          "Allgemein"\r
+    IDS_TAB_FREELDR          "FREELDR.INI"   \r
+    IDS_TAB_SERVICES         "Dienste" \r
+    IDS_TAB_STARTUP          "Systemstart" \r
+    IDS_TAB_TOOLS            "Tools"\r
+END\r
+\r
+STRINGTABLE DISCARDABLE\r
+BEGIN\r
+    IDS_SERVICES_COLUMN_SERVICE "Dienst"\r
+    IDS_SERVICES_COLUMN_VENDOR  "Hersteller"\r
+    IDS_SERVICES_COLUMN_STATUS  "Status"\r
+END\r
+\r
+STRINGTABLE DISCARDABLE\r
+BEGIN\r
+    IDS_TOOLS_COLUMN_NAME    "Name"\r
+    IDS_TOOLS_COLUMN_DESCR   "Beschreibung"\r
+\r
+    IDS_TOOLS_CMD_NAME       "Konsole"\r
+    IDS_TOOLS_CMD_DESCR      "Öffnet die Eingabeaufforderung."\r
+    IDS_TOOLS_CMD_CMD        "cmd.exe"\r
+    IDS_TOOLS_CMD_PARAM      ""\r
+\r
+    IDS_TOOLS_INFO_NAME      "Version"\r
+    IDS_TOOLS_INFO_DESCR     "Zeigt die installierte ReactOS Version an."\r
+    IDS_TOOLS_INFO_CMD       "winver.exe"\r
+\r
+    IDS_TOOLS_REGEDIT_NAME   "Registrierungs-Editor"\r
+    IDS_TOOLS_REGEDIT_DESCR  "Öffnet den Registrierungs-Editor."\r
+    IDS_TOOLS_REGEDIT_CMD    "regedit.exe"\r
+\r
+    IDS_TOOLS_SYSDM_NAME     "Systemeigenschaften"\r
+    IDS_TOOLS_SYSDM_DESCR    "Zeigt Informationen über diesen Rechner an."\r
+    IDS_TOOLS_SYSDM_CMD      "control"\r
+    IDS_TOOLS_SYSDM_PARAM    "sysdm.cpl"\r
+END\r
diff --git a/reactos/subsys/system/msconfig/En.rc b/reactos/subsys/system/msconfig/En.rc
new file mode 100644 (file)
index 0000000..bb721f1
--- /dev/null
@@ -0,0 +1,70 @@
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US\r
+\r
+IDD_MSCONFIG_DIALOG DIALOG DISCARDABLE  0, 0, 378, 220\r
+STYLE DS_CENTER | WS_MINIMIZEBOX | WS_POPUP |\r
+    WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU |\r
+    WS_THICKFRAME\r
+CAPTION "Systemkonfigurationsprogramm"\r
+FONT 8, "Tahoma"\r
+BEGIN\r
+    CONTROL "Tab1",IDC_TAB,"SysTabControl32",WS_TABSTOP,2,2,374,195\r
+    DEFPUSHBUTTON "OK", IDOK, 211, 201, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP\r
+    PUSHBUTTON "&Help", IDC_BTN_HELP, 2, 201, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP\r
+    PUSHBUTTON "Cancel", IDCANCEL, 267, 201, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP\r
+    PUSHBUTTON "Apply", IDC_BTN_APPLY, 323, 201, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP\r
+END\r
+\r
+IDD_TOOLS_PAGE DIALOG DISCARDABLE  0, 0, 362, 175\r
+STYLE DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN\r
+FONT 8, "Tahoma"\r
+BEGIN\r
+    CONTROL "List2",IDC_TOOLS_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 2, 1, 360, 134\r
+    EDITTEXT IDC_TOOLS_CMDLINE, 1, 139, 360, 12, ES_READONLY\r
+    PUSHBUTTON "&Run", IDC_BTN_RUN, 311, 155, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP\r
+END\r
+\r
+IDD_SERVICES_PAGE DIALOG DISCARDABLE  0, 0, 362, 175\r
+STYLE DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN\r
+FONT 8, "Tahoma"\r
+BEGIN\r
+    CONTROL "List1",IDC_SERVICES_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 2, 1, 360, 168\r
+END\r
+\r
+STRINGTABLE DISCARDABLE\r
+BEGIN\r
+    IDS_TAB_GENERAL          "General"\r
+    IDS_TAB_FREELDR          "FREELDR.INI"   \r
+    IDS_TAB_SERVICES         "Services" \r
+    IDS_TAB_STARTUP          "Startup" \r
+    IDS_TAB_TOOLS            "Tools"\r
+END\r
+\r
+STRINGTABLE DISCARDABLE\r
+BEGIN\r
+    IDS_SERVICES_COLUMN_SERVICE "Service"\r
+    IDS_SERVICES_COLUMN_VENDOR  "Vendor"\r
+    IDS_SERVICES_COLUMN_STATUS  "Status"\r
+END\r
+\r
+STRINGTABLE DISCARDABLE\r
+BEGIN\r
+    IDS_TOOLS_COLUMN_NAME    "Name"\r
+    IDS_TOOLS_COLUMN_DESCR   "Description"\r
+\r
+    IDS_TOOLS_CMD_NAME       "Console"\r
+    IDS_TOOLS_CMD_DESCR      ""\r
+    IDS_TOOLS_CMD_CMD        "cmd.exe"\r
+\r
+    IDS_TOOLS_INFO_NAME      "Version"\r
+    IDS_TOOLS_INFO_DESCR     "Displays version information."\r
+    IDS_TOOLS_INFO_CMD       "winver.exe"\r
+\r
+    IDS_TOOLS_REGEDIT_NAME   "Registry-Editor"\r
+    IDS_TOOLS_REGEDIT_DESCR  "Opens the Registry-Editor."\r
+    IDS_TOOLS_REGEDIT_CMD    "regedit.exe"\r
+\r
+    IDS_TOOLS_SYSDM_NAME     "Systemproperties"\r
+    IDS_TOOLS_SYSDM_DESCR    "Shows information about this computer."\r
+    IDS_TOOLS_SYSDM_CMD      "control"\r
+    IDS_TOOLS_SYSDM_PARAM    "sysdm.cpl"\r
+END\r
diff --git a/reactos/subsys/system/msconfig/msconfig.c b/reactos/subsys/system/msconfig/msconfig.c
new file mode 100644 (file)
index 0000000..554648d
--- /dev/null
@@ -0,0 +1,152 @@
+#include <precomp.h>\r
+\r
+HINSTANCE hInst = 0;\r
+\r
+HWND hMainWnd;                   /* Main Window */\r
+HWND hTabWnd;                    /* Tab Control Window */\r
+\r
+\r
+BOOL OnCreate(HWND hWnd)\r
+{\r
+       TCHAR   szTemp[256];\r
+       TCITEM  item;\r
+\r
+       hTabWnd = GetDlgItem(hWnd, IDC_TAB);\r
+    hToolsPage = CreateDialog(hInst, MAKEINTRESOURCE(IDD_TOOLS_PAGE), hWnd, ToolsPageWndProc);\r
+    hServicesPage = CreateDialog(hInst, MAKEINTRESOURCE(IDD_SERVICES_PAGE), hWnd, ServicesPageWndProc);\r
+\r
+       // Insert Tab Pages\r
+       LoadString(hInst, IDS_TAB_GENERAL, szTemp, 256);\r
+    memset(&item, 0, sizeof(TCITEM));\r
+    item.mask = TCIF_TEXT;\r
+    item.pszText = szTemp;\r
+    TabCtrl_InsertItem(hTabWnd, 0, &item);\r
+\r
+       LoadString(hInst, IDS_TAB_FREELDR, szTemp, 256);\r
+    memset(&item, 0, sizeof(TCITEM));\r
+    item.mask = TCIF_TEXT;\r
+    item.pszText = szTemp;\r
+    TabCtrl_InsertItem(hTabWnd, 1, &item);\r
+\r
+       LoadString(hInst, IDS_TAB_SERVICES, szTemp, 256);\r
+    memset(&item, 0, sizeof(TCITEM));\r
+    item.mask = TCIF_TEXT;\r
+    item.pszText = szTemp;\r
+    TabCtrl_InsertItem(hTabWnd, 2, &item);\r
+\r
+       LoadString(hInst, IDS_TAB_STARTUP, szTemp, 256);\r
+    memset(&item, 0, sizeof(TCITEM));\r
+    item.mask = TCIF_TEXT;\r
+    item.pszText = szTemp;\r
+    TabCtrl_InsertItem(hTabWnd, 3, &item);\r
+\r
+       LoadString(hInst, IDS_TAB_TOOLS, szTemp, 256);\r
+    memset(&item, 0, sizeof(TCITEM));\r
+    item.mask = TCIF_TEXT;\r
+    item.pszText = szTemp;\r
+    TabCtrl_InsertItem(hTabWnd, 4, &item);\r
+\r
+       return TRUE;\r
+}\r
+\r
+\r
+void MsConfig_OnTabWndSelChange(void)\r
+{\r
+    switch (TabCtrl_GetCurSel(hTabWnd)) {\r
+    case 0:\r
+        ShowWindow(hToolsPage, SW_HIDE);\r
+               //ShowWindow(hFreeLdrPage, SW_SHOW);\r
+               ShowWindow(hServicesPage, SW_HIDE);\r
+        //BringWindowToTop(hFreeLdrPage);\r
+               break;\r
+    case 1:\r
+        ShowWindow(hToolsPage, SW_HIDE);\r
+               //ShowWindow(hFreeLdrPage, SW_SHOW);\r
+               ShowWindow(hServicesPage, SW_HIDE);\r
+        //BringWindowToTop(hFreeLdrPage);\r
+               break;\r
+    case 2:\r
+        ShowWindow(hToolsPage, SW_HIDE);\r
+               //ShowWindow(hFreeLdrPage, SW_HIDE);\r
+               ShowWindow(hServicesPage, SW_SHOW);\r
+        //BringWindowToTop(hFreeLdrPage);\r
+               break;\r
+    case 3:\r
+        ShowWindow(hToolsPage, SW_HIDE);\r
+               //ShowWindow(hFreeLdrPage, SW_HIDE);\r
+               ShowWindow(hServicesPage, SW_HIDE);\r
+        //BringWindowToTop(hFreeLdrPage);\r
+               break;\r
+       case 4:\r
+        ShowWindow(hToolsPage, SW_SHOW);\r
+               //ShowWindow(hFreeLdrPage, SW_HIDE);\r
+               ShowWindow(hServicesPage, SW_HIDE);\r
+        BringWindowToTop(hToolsPage);\r
+               break;\r
+       }\r
+}\r
+\r
+\r
+/* Message handler for dialog box. */\r
+INT_PTR CALLBACK\r
+MsConfigWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
+{\r
+    int             idctrl;\r
+    LPNMHDR         pnmh;\r
+\r
+    switch (message) {\r
+    case WM_INITDIALOG:\r
+        hMainWnd = hDlg;\r
+        return OnCreate(hDlg);\r
+\r
+       case WM_COMMAND:\r
+\r
+               if (LOWORD(wParam) == IDOK) {\r
+                       //MsConfig_OnSaveChanges();\r
+               }\r
+\r
+        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) {\r
+            EndDialog(hDlg, LOWORD(wParam));\r
+            return TRUE;\r
+               }\r
+               break;\r
+\r
+    case WM_NOTIFY:\r
+        idctrl = (int)wParam;\r
+        pnmh = (LPNMHDR)lParam;\r
+        if ((pnmh->hwndFrom == hTabWnd) &&\r
+            (pnmh->idFrom == IDC_TAB) &&\r
+            (pnmh->code == TCN_SELCHANGE))\r
+        {\r
+            MsConfig_OnTabWndSelChange();\r
+        }\r
+        break;\r
+\r
+    case WM_DESTROY:\r
+        return DefWindowProc(hDlg, message, wParam, lParam);\r
+\r
+    }\r
+\r
+    return 0;\r
+}\r
+\r
+int APIENTRY WinMain(HINSTANCE hInstance,\r
+                     HINSTANCE hPrevInstance,\r
+                     LPSTR     lpCmdLine,\r
+                     int       nCmdShow)\r
+{\r
+\r
+    INITCOMMONCONTROLSEX InitControls;\r
+\r
+    InitControls.dwSize = sizeof(INITCOMMONCONTROLSEX);\r
+    InitControls.dwICC = ICC_TAB_CLASSES | ICC_LISTVIEW_CLASSES;\r
+    InitCommonControlsEx(&InitControls);\r
+\r
+    hInst = hInstance;\r
\r
+    DialogBox(hInst, (LPCTSTR)IDD_MSCONFIG_DIALOG, NULL, MsConfigWndProc);\r
+  \r
+    return 0;\r
+}\r
+\r
+/* EOF */\r
diff --git a/reactos/subsys/system/msconfig/msconfig.h b/reactos/subsys/system/msconfig/msconfig.h
new file mode 100644 (file)
index 0000000..d8c36c7
--- /dev/null
@@ -0,0 +1,2 @@
+extern HINSTANCE hInst;\r
+\r
diff --git a/reactos/subsys/system/msconfig/msconfig.rc b/reactos/subsys/system/msconfig/msconfig.rc
new file mode 100644 (file)
index 0000000..f5f93bc
--- /dev/null
@@ -0,0 +1,18 @@
+#include <windows.h>\r
+#include <commctrl.h>\r
+\r
+#include "resource.h"\r
+\r
+\r
+LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL\r
+\r
+#define REACTOS_VERSION_DLL\r
+#define REACTOS_STR_FILE_DESCRIPTION   "ReactOS Systemconfiguration Tool\0"\r
+#define REACTOS_STR_INTERNAL_NAME      "msconfig\0"\r
+#define REACTOS_STR_ORIGINAL_FILENAME  "msconfig.exe\0"\r
+#include <reactos/version.rc>\r
+\r
+\r
+#include "De.rc"\r
+#include "En.rc"\r
+\r
diff --git a/reactos/subsys/system/msconfig/msconfig.xml b/reactos/subsys/system/msconfig/msconfig.xml
new file mode 100644 (file)
index 0000000..2631be1
--- /dev/null
@@ -0,0 +1,16 @@
+<module name="msconfig" type="win32gui" installbase="system32" installname="msconfig.exe">\r
+       <include base="msconfig">.</include>\r
+       <define name="UNICODE" />\r
+       <define name="_UNICODE" />\r
+       <define name="__REACTOS__" />\r
+       <define name="__USE_W32API" />\r
+       <define name="_WIN32_IE">0x600</define>\r
+       <define name="_WIN32_WINNT">0x501</define>\r
+       <library>kernel32</library>\r
+       <library>user32</library>\r
+       <library>comctl32</library>\r
+       <file>toolspage.c</file>\r
+       <file>srvpage.c</file>\r
+       <file>msconfig.c</file>\r
+       <file>msconfig.rc</file>\r
+</module>\r
diff --git a/reactos/subsys/system/msconfig/precomp.h b/reactos/subsys/system/msconfig/precomp.h
new file mode 100644 (file)
index 0000000..8532fab
--- /dev/null
@@ -0,0 +1,11 @@
+#include <windows.h>\r
+#define NTOS_MODE_USER\r
+#include <commctrl.h>\r
+#include <winuser.h>\r
+#include <tchar.h>\r
+\r
+#include "resource.h"\r
+#include "msconfig.h"\r
+#include "toolspage.h"\r
+#include "srvpage.h"\r
+\r
diff --git a/reactos/subsys/system/msconfig/resource.h b/reactos/subsys/system/msconfig/resource.h
new file mode 100644 (file)
index 0000000..87cda40
--- /dev/null
@@ -0,0 +1,47 @@
+#define IDD_MSCONFIG_DIALOG              101\r
+#define IDD_TOOLS_PAGE                   102\r
+#define IDD_SERVICES_PAGE                103\r
+#define IDD_GENERAL_PAGE                 104\r
+#define IDD_STARTUP_PAGE                 105\r
+\r
+#define IDC_TAB                         1001\r
+#define IDC_BTN_APPLY                   1002\r
+#define IDC_BTN_HELP                    1003\r
+#define IDC_TOOLS_CMDLINE               1004\r
+#define IDC_BTN_RUN                     1005\r
+#define IDC_SERVICES_LIST               1006\r
+#define IDC_TOOLS_LIST                  1007\r
+\r
+#define IDS_TAB_TOOLS                   2001\r
+#define IDS_TAB_FREELDR                 2002\r
+#define IDS_TAB_STARTUP                 2003\r
+#define IDS_TAB_SERVICES                2004\r
+#define IDS_TAB_GENERAL                 2005\r
+\r
+#define IDS_TOOLS_COLUMN_NAME           2010\r
+#define IDS_TOOLS_COLUMN_DESCR          2011\r
+#define IDS_SERVICES_COLUMN_SERVICE     2012\r
+#define IDS_SERVICES_COLUMN_VENDOR      2013\r
+#define IDS_SERVICES_COLUMN_STATUS      2014\r
+\r
+#define IDS_TOOLS_CMD_NAME              2100\r
+#define IDS_TOOLS_CMD_DESCR             2101\r
+#define IDS_TOOLS_CMD_CMD               2102\r
+#define IDS_TOOLS_CMD_PARAM             2103\r
+\r
+#define IDS_TOOLS_INFO_NAME             2104\r
+#define IDS_TOOLS_INFO_DESCR            2105\r
+#define IDS_TOOLS_INFO_CMD              2106\r
+#define IDS_TOOLS_INFO_PARAM            2107\r
+\r
+#define IDS_TOOLS_REGEDIT_NAME          2108\r
+#define IDS_TOOLS_REGEDIT_DESCR         2109\r
+#define IDS_TOOLS_REGEDIT_CMD           2110\r
+#define IDS_TOOLS_REGEDIT_PARAM         2111\r
+\r
+#define IDS_TOOLS_SYSDM_NAME            2112\r
+#define IDS_TOOLS_SYSDM_DESCR           2113\r
+#define IDS_TOOLS_SYSDM_CMD             2114\r
+#define IDS_TOOLS_SYSDM_PARAM           2115\r
+\r
+/* EOF */\r
diff --git a/reactos/subsys/system/msconfig/srvpage.c b/reactos/subsys/system/msconfig/srvpage.c
new file mode 100644 (file)
index 0000000..8c50561
--- /dev/null
@@ -0,0 +1,50 @@
+#include <precomp.h>\r
+\r
+HWND hServicesPage;\r
+HWND hServicesListCtrl;\r
+HWND hServicesDialog;\r
+\r
+INT_PTR CALLBACK\r
+ServicesPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
+{\r
+       LV_COLUMN   column;\r
+       TCHAR       szTemp[256];\r
+\r
+    switch (message) {\r
+    case WM_INITDIALOG:\r
+\r
+        hServicesListCtrl = GetDlgItem(hDlg, IDC_TOOLS_LIST);\r
+        hServicesDialog = hDlg;\r
+\r
+               DWORD dwStyle;\r
+        dwStyle = SendMessage(hServicesListCtrl, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0);\r
+        dwStyle = dwStyle | LVS_EX_FULLROWSELECT | LVS_EX_CHECKBOXES;\r
+        SendMessage(hServicesListCtrl, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dwStyle);\r
+\r
+           SetWindowPos(hDlg, NULL, 10, 32, 0, 0, SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER);\r
+\r
+        // Initialize the application page's controls\r
+        column.mask = LVCF_TEXT | LVCF_WIDTH;\r
+\r
+        LoadString(hInst, IDS_SERVICES_COLUMN_SERVICE, szTemp, 256);\r
+        column.pszText = szTemp;\r
+        column.cx = 150;\r
+        ListView_InsertColumn(hServicesListCtrl, 0, &column);\r
+\r
+        column.mask = LVCF_TEXT | LVCF_WIDTH;\r
+        LoadString(hInst, IDS_SERVICES_COLUMN_VENDOR, szTemp, 256);\r
+        column.pszText = szTemp;\r
+        column.cx = 200;\r
+        ListView_InsertColumn(hServicesListCtrl, 1, &column);\r
+\r
+        column.mask = LVCF_TEXT | LVCF_WIDTH;\r
+        LoadString(hInst, IDS_SERVICES_COLUMN_STATUS, szTemp, 256);\r
+        column.pszText = szTemp;\r
+        column.cx = 70;\r
+        ListView_InsertColumn(hServicesListCtrl, 1, &column);\r
+\r
+               return TRUE;\r
+       }\r
+\r
+  return 0;\r
+}\r
diff --git a/reactos/subsys/system/msconfig/srvpage.h b/reactos/subsys/system/msconfig/srvpage.h
new file mode 100644 (file)
index 0000000..9128ff4
--- /dev/null
@@ -0,0 +1,4 @@
+extern HWND hServicesPage;\r
+extern HWND hServicesListCtrl;\r
+\r
+INT_PTR CALLBACK ServicesPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
diff --git a/reactos/subsys/system/msconfig/toolspage.c b/reactos/subsys/system/msconfig/toolspage.c
new file mode 100644 (file)
index 0000000..fef4e2a
--- /dev/null
@@ -0,0 +1,124 @@
+#include <precomp.h>\r
+\r
+HWND hToolsPage;\r
+HWND hToolsListCtrl;\r
+HWND hToolsDialog;\r
+\r
+void AddItem ( DWORD, DWORD, DWORD, DWORD );\r
+void FillListView ( void );\r
+\r
+DWORD ListItems_Cmds[20];\r
+DWORD ListItems_Params[20];\r
+        \r
+void AddItem ( DWORD name_id, DWORD descr_id, DWORD cmd_id , DWORD param_id ) {\r
+       TCHAR szTemp[256];\r
+    LV_ITEM item;\r
+\r
+       LoadString(hInst, name_id, szTemp, 256);\r
+       memset(&item, 0, sizeof(LV_ITEM));\r
+    item.mask = LVIF_TEXT;\r
+    item.iImage = 0;\r
+    item.pszText = szTemp;\r
+    item.iItem = ListView_GetItemCount(hToolsListCtrl);\r
+    item.lParam = 0;\r
+    ListView_InsertItem(hToolsListCtrl, &item);\r
+\r
+       ListItems_Cmds[item.iItem] = cmd_id;\r
+       ListItems_Params[item.iItem] = param_id;\r
+\r
+       LoadString(hInst, descr_id, szTemp, 256);\r
+       item.pszText = szTemp;\r
+       item.iSubItem = 1;\r
+       SendMessage(hToolsListCtrl, LVM_SETITEMTEXT, item.iItem, (LPARAM) &item);\r
+}\r
+\r
+void FillListView ( void ) {\r
+       AddItem(IDS_TOOLS_CMD_NAME, IDS_TOOLS_CMD_DESCR, IDS_TOOLS_CMD_CMD, IDS_TOOLS_CMD_PARAM);\r
+       AddItem(IDS_TOOLS_REGEDIT_NAME, IDS_TOOLS_REGEDIT_DESCR, IDS_TOOLS_REGEDIT_CMD,IDS_TOOLS_REGEDIT_PARAM);\r
+       AddItem(IDS_TOOLS_SYSDM_NAME, IDS_TOOLS_SYSDM_DESCR, IDS_TOOLS_SYSDM_CMD, IDS_TOOLS_SYSDM_PARAM);\r
+       AddItem(IDS_TOOLS_INFO_NAME, IDS_TOOLS_INFO_DESCR, IDS_TOOLS_INFO_CMD, IDS_TOOLS_INFO_PARAM);\r
+}\r
+\r
+INT_PTR CALLBACK\r
+ToolsPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
+{\r
+       LV_COLUMN   column;\r
+       TCHAR       szTemp[256];\r
+       TCHAR       szTemp2[256];\r
+       LPNMITEMACTIVATE lpnmitem;\r
+       LPNMHDR nmh;\r
+\r
+    switch (message) {\r
+    case WM_INITDIALOG:\r
+\r
+        hToolsListCtrl = GetDlgItem(hDlg, IDC_TOOLS_LIST);\r
+        hToolsDialog = hDlg;\r
+\r
+               DWORD dwStyle;\r
+        dwStyle = SendMessage(hToolsListCtrl, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0);\r
+        dwStyle = dwStyle | LVS_EX_FULLROWSELECT;\r
+        SendMessage(hToolsListCtrl, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dwStyle);\r
+\r
+           SetWindowPos(hDlg, NULL, 10, 32, 0, 0, SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER);\r
+\r
+        // Initialize the application page's controls\r
+        column.mask = LVCF_TEXT | LVCF_WIDTH;\r
+\r
+        LoadString(hInst, IDS_TOOLS_COLUMN_NAME, szTemp, 256);\r
+        column.pszText = szTemp;\r
+        column.cx = 150;\r
+        ListView_InsertColumn(hToolsListCtrl, 0, &column);\r
+\r
+        column.mask = LVCF_TEXT | LVCF_WIDTH;\r
+        LoadString(hInst, IDS_TOOLS_COLUMN_DESCR, szTemp, 256);\r
+        column.pszText = szTemp;\r
+        column.cx = 500;\r
+        ListView_InsertColumn(hToolsListCtrl, 1, &column);\r
+\r
+               FillListView();\r
+               return TRUE;\r
+\r
+       case WM_COMMAND:\r
+               switch (LOWORD(wParam))\r
+        {\r
+        case IDC_BTN_RUN:\r
+                       if (ListView_GetSelectionMark(hToolsListCtrl) != -1) {\r
+                               LoadString(hInst, ListItems_Cmds[ListView_GetSelectionMark(hToolsListCtrl)], szTemp, 256);\r
+                               LoadString(hInst, ListItems_Params[ListView_GetSelectionMark(hToolsListCtrl)], szTemp2, 256);\r
+                               ShellExecute(0, _T("open"), szTemp, szTemp2, _T(""), SW_NORMAL);\r
+                       }\r
+               }\r
+               break;\r
+\r
+       case WM_NOTIFY:\r
+               nmh = (LPNMHDR) lParam;\r
+               if (nmh->hwndFrom == hToolsListCtrl)\r
+               {\r
+                       switch (nmh->code)\r
+               {\r
+                   case NM_CLICK:\r
+                               lpnmitem = (LPNMITEMACTIVATE) lParam;\r
+                               if (lpnmitem->iItem > -1) {\r
+                                       LoadString(hInst, ListItems_Cmds[lpnmitem->iItem], szTemp, 256);\r
+                                       LoadString(hInst, ListItems_Params[lpnmitem->iItem], szTemp2, 256);\r
+                                       _tcscat(szTemp, _T(" "));\r
+                                       _tcscat(szTemp, szTemp2);\r
+                                       SendDlgItemMessage(hToolsDialog, IDC_TOOLS_CMDLINE, WM_SETTEXT, 0, (LPARAM) szTemp);\r
+                               }\r
+                               break;\r
+                   case NM_DBLCLK:\r
+                               lpnmitem = (LPNMITEMACTIVATE) lParam;\r
+                               if (lpnmitem->iItem > -1) {\r
+                                       LoadString(hInst, ListItems_Cmds[lpnmitem->iItem], szTemp, 256);\r
+                                       LoadString(hInst, ListItems_Params[lpnmitem->iItem], szTemp2, 256);\r
+                                       ShellExecute(0, _T("open"), szTemp, szTemp2, _T(""), SW_NORMAL);\r
+                               }\r
+                               break;\r
+                       }\r
+               }\r
+               break;\r
+       }\r
+\r
+  return 0;\r
+}\r
+\r
diff --git a/reactos/subsys/system/msconfig/toolspage.h b/reactos/subsys/system/msconfig/toolspage.h
new file mode 100644 (file)
index 0000000..00f5db2
--- /dev/null
@@ -0,0 +1,5 @@
+extern HWND hToolsPage;\r
+extern HWND hToolsListCtrl;\r
+\r
+INT_PTR CALLBACK ToolsPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
+\r