started implementing startup page
Modified: trunk/reactos/subsys/system/msconfig/De.rc
Modified: trunk/reactos/subsys/system/msconfig/En.rc
Modified: trunk/reactos/subsys/system/msconfig/msconfig.c
Modified: trunk/reactos/subsys/system/msconfig/msconfig.xml
Modified: trunk/reactos/subsys/system/msconfig/precomp.h
Modified: trunk/reactos/subsys/system/msconfig/resource.h
Modified: trunk/reactos/subsys/system/msconfig/srvpage.c
Added: trunk/reactos/subsys/system/msconfig/startuppage.c
Added: trunk/reactos/subsys/system/msconfig/startuppage.h
_____
Modified: trunk/reactos/subsys/system/msconfig/De.rc
--- trunk/reactos/subsys/system/msconfig/De.rc 2005-11-10 20:33:10 UTC
(rev 19123)
+++ trunk/reactos/subsys/system/msconfig/De.rc 2005-11-10 20:56:49 UTC
(rev 19124)
@@ -23,6 +23,13 @@
PUSHBUTTON "&Ausf³hren", IDC_BTN_RUN, 311, 155, 50, 14, WS_CHILD |
WS_VISIBLE | WS_TABSTOP
END
+IDD_STARTUP_PAGE DIALOG DISCARDABLE 0, 0, 362, 175
+STYLE DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
+FONT 8, "Tahoma"
+BEGIN
+ CONTROL "List3",IDC_STARTUP_LIST, "SysListView32", LVS_REPORT |
LVS_SINGLESEL | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 2, 1, 360,
168
+END
+
IDD_SERVICES_PAGE DIALOG DISCARDABLE 0, 0, 362, 175
STYLE DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
FONT 8, "Tahoma"
@@ -68,4 +75,8 @@
IDS_TOOLS_SYSDM_DESCR "Zeigt Informationen ³ber diesen Rechner
an."
IDS_TOOLS_SYSDM_CMD "control"
IDS_TOOLS_SYSDM_PARAM "sysdm.cpl"
+
+ IDS_STARTUP_COLUMN_ELEMENT "Element"
+ IDS_STARTUP_COLUMN_CMD "Befehl"
+ IDS_STARTUP_COLUMN_PATH "Pfad"
END
_____
Modified: trunk/reactos/subsys/system/msconfig/En.rc
--- trunk/reactos/subsys/system/msconfig/En.rc 2005-11-10 20:33:10 UTC
(rev 19123)
+++ trunk/reactos/subsys/system/msconfig/En.rc 2005-11-10 20:56:49 UTC
(rev 19124)
@@ -14,6 +14,13 @@
PUSHBUTTON "Apply", IDC_BTN_APPLY, 323, 201, 50, 14, WS_CHILD |
WS_VISIBLE | WS_TABSTOP
END
+IDD_STARTUP_PAGE DIALOG DISCARDABLE 0, 0, 362, 175
+STYLE DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
+FONT 8, "Tahoma"
+BEGIN
+ CONTROL "List3",IDC_STARTUP_LIST, "SysListView32", LVS_REPORT |
LVS_SINGLESEL | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 2, 1, 360,
168
+END
+
IDD_TOOLS_PAGE DIALOG DISCARDABLE 0, 0, 362, 175
STYLE DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
FONT 8, "Tahoma"
@@ -67,4 +74,8 @@
IDS_TOOLS_SYSDM_DESCR "Shows information about this computer."
IDS_TOOLS_SYSDM_CMD "control"
IDS_TOOLS_SYSDM_PARAM "sysdm.cpl"
+
+ IDS_STARTUP_COLUMN_ELEMENT "Element"
+ IDS_STARTUP_COLUMN_CMD "Command"
+ IDS_STARTUP_COLUMN_PATH "Path"
END
_____
Modified: trunk/reactos/subsys/system/msconfig/msconfig.c
--- trunk/reactos/subsys/system/msconfig/msconfig.c 2005-11-10
20:33:10 UTC (rev 19123)
+++ trunk/reactos/subsys/system/msconfig/msconfig.c 2005-11-10
20:56:49 UTC (rev 19124)
@@ -14,6 +14,7 @@
hTabWnd = GetDlgItem(hWnd, IDC_TAB);
hToolsPage = CreateDialog(hInst, MAKEINTRESOURCE(IDD_TOOLS_PAGE),
hWnd, ToolsPageWndProc);
hServicesPage = CreateDialog(hInst,
MAKEINTRESOURCE(IDD_SERVICES_PAGE), hWnd, ServicesPageWndProc);
+ hStartupPage = CreateDialog(hInst,
MAKEINTRESOURCE(IDD_STARTUP_PAGE), hWnd, StartupPageWndProc);
// Insert Tab Pages
LoadString(hInst, IDS_TAB_GENERAL, szTemp, 256);
@@ -53,32 +54,37 @@
void MsConfig_OnTabWndSelChange(void)
{
switch (TabCtrl_GetCurSel(hTabWnd)) {
- case 0:
+ case 0: //General
ShowWindow(hToolsPage, SW_HIDE);
- //ShowWindow(hFreeLdrPage, SW_SHOW);
+ ShowWindow(hStartupPage, SW_HIDE);
+ //ShowWindow(hFreeLdrPage, SW_HIDE);
ShowWindow(hServicesPage, SW_HIDE);
//BringWindowToTop(hFreeLdrPage);
break;
- case 1:
+ case 1: //Freeldr
ShowWindow(hToolsPage, SW_HIDE);
+ ShowWindow(hStartupPage, SW_HIDE);
//ShowWindow(hFreeLdrPage, SW_SHOW);
ShowWindow(hServicesPage, SW_HIDE);
//BringWindowToTop(hFreeLdrPage);
break;
- case 2:
+ case 2: //Services
ShowWindow(hToolsPage, SW_HIDE);
+ ShowWindow(hStartupPage, SW_HIDE);
//ShowWindow(hFreeLdrPage, SW_HIDE);
ShowWindow(hServicesPage, SW_SHOW);
//BringWindowToTop(hFreeLdrPage);
break;
- case 3:
+ case 3: //startup
ShowWindow(hToolsPage, SW_HIDE);
+ ShowWindow(hStartupPage, SW_SHOW);
//ShowWindow(hFreeLdrPage, SW_HIDE);
ShowWindow(hServicesPage, SW_HIDE);
- //BringWindowToTop(hFreeLdrPage);
+ BringWindowToTop(hStartupPage);
break;
- case 4:
+ case 4: //Tools
ShowWindow(hToolsPage, SW_SHOW);
+ ShowWindow(hStartupPage, SW_HIDE);
//ShowWindow(hFreeLdrPage, SW_HIDE);
ShowWindow(hServicesPage, SW_HIDE);
BringWindowToTop(hToolsPage);
@@ -125,6 +131,7 @@
case WM_DESTROY:
DestroyWindow(hToolsPage);
DestroyWindow(hServicesPage);
+ DestroyWindow(hStartupPage);
return DefWindowProc(hDlg, message, wParam, lParam);
}
_____
Modified: trunk/reactos/subsys/system/msconfig/msconfig.xml
--- trunk/reactos/subsys/system/msconfig/msconfig.xml 2005-11-10
20:33:10 UTC (rev 19123)
+++ trunk/reactos/subsys/system/msconfig/msconfig.xml 2005-11-10
20:56:49 UTC (rev 19124)
@@ -12,6 +12,7 @@
<library>shell32</library>
<file>toolspage.c</file>
<file>srvpage.c</file>
+ <file>startuppage.c</file>
<file>msconfig.c</file>
<file>msconfig.rc</file>
</module>
_____
Modified: trunk/reactos/subsys/system/msconfig/precomp.h
--- trunk/reactos/subsys/system/msconfig/precomp.h 2005-11-10
20:33:10 UTC (rev 19123)
+++ trunk/reactos/subsys/system/msconfig/precomp.h 2005-11-10
20:56:49 UTC (rev 19124)
@@ -8,4 +8,9 @@
#include "msconfig.h"
#include "toolspage.h"
#include "srvpage.h"
+#include "startuppage.h"
+#define MAX_KEY_LENGTH 255
+#define MAX_VALUE_NAME 16383
+
+
_____
Modified: trunk/reactos/subsys/system/msconfig/resource.h
--- trunk/reactos/subsys/system/msconfig/resource.h 2005-11-10
20:33:10 UTC (rev 19123)
+++ trunk/reactos/subsys/system/msconfig/resource.h 2005-11-10
20:56:49 UTC (rev 19124)
@@ -11,6 +11,7 @@
#define IDC_BTN_RUN 1005
#define IDC_SERVICES_LIST 1006
#define IDC_TOOLS_LIST 1007
+#define IDC_STARTUP_LIST 1008
#define IDS_TAB_TOOLS 2001
#define IDS_TAB_FREELDR 2002
@@ -23,6 +24,9 @@
#define IDS_SERVICES_COLUMN_SERVICE 2012
#define IDS_SERVICES_COLUMN_VENDOR 2013
#define IDS_SERVICES_COLUMN_STATUS 2014
+#define IDS_STARTUP_COLUMN_ELEMENT 2015
+#define IDS_STARTUP_COLUMN_CMD 2016
+#define IDS_STARTUP_COLUMN_PATH 2017
#define IDS_TOOLS_CMD_NAME 2100
#define IDS_TOOLS_CMD_DESCR 2101
_____
Modified: trunk/reactos/subsys/system/msconfig/srvpage.c
--- trunk/reactos/subsys/system/msconfig/srvpage.c 2005-11-10
20:33:10 UTC (rev 19123)
+++ trunk/reactos/subsys/system/msconfig/srvpage.c 2005-11-10
20:56:49 UTC (rev 19124)
@@ -14,7 +14,7 @@
switch (message) {
case WM_INITDIALOG:
- hServicesListCtrl = GetDlgItem(hDlg, IDC_TOOLS_LIST);
+ hServicesListCtrl = GetDlgItem(hDlg, IDC_SERVICES_LIST);
hServicesDialog = hDlg;
dwStyle = SendMessage(hServicesListCtrl,
LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0);
@@ -41,7 +41,7 @@
LoadString(hInst, IDS_SERVICES_COLUMN_STATUS, szTemp, 256);
column.pszText = szTemp;
column.cx = 70;
- ListView_InsertColumn(hServicesListCtrl, 1, &column);
+ ListView_InsertColumn(hServicesListCtrl, 2, &column);
return TRUE;
}
_____
Added: trunk/reactos/subsys/system/msconfig/startuppage.c
--- trunk/reactos/subsys/system/msconfig/startuppage.c 2005-11-10
20:33:10 UTC (rev 19123)
+++ trunk/reactos/subsys/system/msconfig/startuppage.c 2005-11-10
20:56:49 UTC (rev 19124)
@@ -0,0 +1,112 @@
+#include <precomp.h>
+
+HWND hStartupPage;
+HWND hStartupListCtrl;
+HWND hStartupDialog;
+
+void GetAutostartEntriesFromRegistry ( HKEY hRootKey, TCHAR* KeyName );
+
+INT_PTR CALLBACK
+StartupPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM
lParam)
+{
+ LV_COLUMN column;
+ TCHAR szTemp[256];
+ DWORD dwStyle;
+
+ switch (message) {
+ case WM_INITDIALOG:
+
+ hStartupListCtrl = GetDlgItem(hDlg, IDC_STARTUP_LIST);
+ hStartupDialog = hDlg;
+
+ dwStyle = SendMessage(hStartupListCtrl,
LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0);
+ dwStyle = dwStyle | LVS_EX_FULLROWSELECT | LVS_EX_CHECKBOXES;
+ SendMessage(hStartupListCtrl, LVM_SETEXTENDEDLISTVIEWSTYLE, 0,
dwStyle);
+
+ SetWindowPos(hDlg, NULL, 10, 32, 0, 0, SWP_NOACTIVATE |
SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER);
+
+ // Initialize the application page's controls
+ column.mask = LVCF_TEXT | LVCF_WIDTH;
+
+ LoadString(hInst, IDS_STARTUP_COLUMN_ELEMENT, szTemp, 256);
+ column.pszText = szTemp;
+ column.cx = 150;
+ ListView_InsertColumn(hStartupListCtrl, 0, &column);
+
+ column.mask = LVCF_TEXT | LVCF_WIDTH;
+ LoadString(hInst, IDS_STARTUP_COLUMN_CMD, szTemp, 256);
+ column.pszText = szTemp;
+ column.cx = 150;
+ ListView_InsertColumn(hStartupListCtrl, 1, &column);
+
+ column.mask = LVCF_TEXT | LVCF_WIDTH;
+ LoadString(hInst, IDS_STARTUP_COLUMN_PATH, szTemp, 256);
+ column.pszText = szTemp;
+ column.cx = 250;
+ ListView_InsertColumn(hStartupListCtrl, 2, &column);
+
+ GetAutostartEntriesFromRegistry(HKEY_LOCAL_MACHINE,
_T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"));
+ GetAutostartEntriesFromRegistry(HKEY_CURRENT_USER,
_T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"));
+ //FIXME: What about HKLM\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\Winlogon\Userinit
+ //FIXME: Common Startup (startmenu)
+
+ return TRUE;
+ }
+
+ return 0;
+}
+
+void
+GetAutostartEntriesFromRegistry ( HKEY hRootKey, TCHAR* KeyName )
+{
+ HKEY hKey;
+ DWORD Index, dwValues, retVal, dwType;
+ DWORD dwValueLength, dwDataLength = MAX_VALUE_NAME;
+ TCHAR Data[MAX_VALUE_NAME];
+ TCHAR lpValueName[MAX_KEY_LENGTH];
+ TCHAR Path[MAX_KEY_LENGTH + 5];
+ LV_ITEM item;
+
+ if (RegOpenKeyEx(hRootKey, KeyName, 0, KEY_READ, &hKey) ==
ERROR_SUCCESS)
+ {
+ if (RegQueryInfoKey(hKey, NULL, NULL, NULL, NULL, NULL, NULL,
&dwValues, NULL, NULL, NULL, NULL) == ERROR_SUCCESS)
+ {
+ for (Index = 0, retVal = ERROR_SUCCESS; Index < dwValues;
Index++)
+ {
+ dwValueLength = MAX_VALUE_NAME;
+ dwDataLength = MAX_VALUE_NAME;
+ retVal = RegEnumValue(hKey, Index, lpValueName,
&dwValueLength, NULL, &dwType, (LPBYTE)Data, &dwDataLength);
+ if (retVal == ERROR_SUCCESS)
+ {
+ memset(&item, 0, sizeof(LV_ITEM));
+ item.mask = LVIF_TEXT;
+ item.iImage = 0;
+ item.pszText = lpValueName;
+ item.iItem =
ListView_GetItemCount(hStartupListCtrl);
+ item.lParam = 0;
+ ListView_InsertItem(hStartupListCtrl, &item);
+
+ if (dwType == REG_SZ)
+ {
+ GetLongPathName(Data, Data, sizeof(Data));
+ item.pszText = Data;
+ item.iSubItem = 1;
+ SendMessage(hStartupListCtrl, LVM_SETITEMTEXT,
item.iItem, (LPARAM) &item);
+ }
+
+ if (hRootKey == HKEY_LOCAL_MACHINE)
+ _tcscpy(Path, _T("HKLM\\"));
+ if (hRootKey == HKEY_CURRENT_USER)
+ _tcscpy(Path, _T("HKCU\\"));
+
+ _tcscat(Path, KeyName);
+ item.pszText = Path;
+ item.iSubItem = 2;
+ SendMessage(hStartupListCtrl, LVM_SETITEMTEXT,
item.iItem, (LPARAM) &item);
+ }
+ }
+ }
+ RegCloseKey(hKey);
+ }
+
+}
_____
Added: trunk/reactos/subsys/system/msconfig/startuppage.h
--- trunk/reactos/subsys/system/msconfig/startuppage.h 2005-11-10
20:33:10 UTC (rev 19123)
+++ trunk/reactos/subsys/system/msconfig/startuppage.h 2005-11-10
20:56:49 UTC (rev 19124)
@@ -0,0 +1,4 @@
+extern HWND hStartupPage;
+extern HWND hStartupPageListCtrl;
+
+INT_PTR CALLBACK StartupPageWndProc(HWND hDlg, UINT message, WPARAM
wParam, LPARAM lParam);