3 * PROJECT: ReactOS System Control Panel Applet
4 * LICENSE: GPL - See COPYING in the top level directory
5 * FILE: dll/cpl/sysdm/startrec.c
6 * PURPOSE: Computer settings for startup and recovery
7 * COPYRIGHT: Copyright 2006 Ged Murphy <gedmurphy@gmail.com>
8 * Copyright 2006 Christoph von Wittich <Christoph@ApiViewer.de>
14 static TCHAR m_szFreeldrIni
[MAX_PATH
+ 15];
15 static TCHAR szBootLdrSection
[12];
16 static TCHAR szBootLdrDefault
[10];
18 void SetTimeout(HWND hwndDlg
, int Timeout
)
22 EnableWindow(GetDlgItem(hwndDlg
, IDC_STRRECLISTUPDWN
), FALSE
);
26 EnableWindow(GetDlgItem(hwndDlg
, IDC_STRRECLISTUPDWN
), TRUE
);
28 SendDlgItemMessage(hwndDlg
, IDC_STRRECLISTUPDWN
, UDM_SETPOS
, (WPARAM
) 0, (LPARAM
) MAKELONG((short) Timeout
, 0));
31 /* Property page dialog callback */
33 StartRecDlgProc(HWND hwndDlg
,
39 TCHAR szDefaultOS
[MAX_PATH
];
40 TCHAR szDefaultOSName
[MAX_PATH
];
44 UNREFERENCED_PARAMETER(lParam
);
52 /* get Path to freeldr.ini or boot.ini */
53 szSystemDrive
= HeapAlloc(GetProcessHeap(), 0, MAX_PATH
* sizeof(TCHAR
));
54 if (szSystemDrive
!= NULL
)
56 dwBufSize
= GetEnvironmentVariable(_T("SystemDrive"), szSystemDrive
, MAX_PATH
);
57 if (dwBufSize
> MAX_PATH
)
62 szTmp
= HeapReAlloc(GetProcessHeap(), 0, szSystemDrive
, dwBufSize
* sizeof(TCHAR
));
66 szSystemDrive
= szTmp
;
68 dwBufSize2
= GetEnvironmentVariable(_T("SystemDrive"), szSystemDrive
, dwBufSize
);
69 if (dwBufSize2
> dwBufSize
|| dwBufSize2
== 0)
72 else if (dwBufSize
== 0)
75 HeapFree(GetProcessHeap(), 0, szSystemDrive
);
80 if (szSystemDrive
!= NULL
)
82 if (m_szFreeldrIni
!= NULL
)
84 _tcscpy(m_szFreeldrIni
, szSystemDrive
);
85 _tcscat(m_szFreeldrIni
, _T("\\freeldr.ini"));
86 if (!PathFileExists(m_szFreeldrIni
))
88 _tcscpy(m_szFreeldrIni
, szSystemDrive
);
89 _tcscat(m_szFreeldrIni
, _T("\\boot.ini"));
90 _tcscpy(szBootLdrSection
, _T("boot loader"));
91 _tcscpy(szBootLdrDefault
, _T("default"));
95 _tcscpy(szBootLdrSection
, _T("FREELOADER"));
96 _tcscpy(szBootLdrDefault
, _T("DefaultOS"));
99 HeapFree(GetProcessHeap(), 0, szSystemDrive
);
103 if (m_szFreeldrIni
== NULL
)
106 SetDlgItemText(hwndDlg
, IDC_STRRECDUMPFILE
, _T("%SystemRoot%\\MiniDump"));
108 /* load settings from freeldr.ini */
109 GetPrivateProfileString(szBootLdrSection
, szBootLdrDefault
, NULL
, szDefaultOS
, MAX_PATH
, m_szFreeldrIni
);
110 GetPrivateProfileString(_T("operating systems"), szDefaultOS
, NULL
, szDefaultOSName
, MAX_PATH
, m_szFreeldrIni
);
111 SendDlgItemMessage(hwndDlg
, IDC_STRECOSCOMBO
, CB_ADDSTRING
, (WPARAM
)0, (LPARAM
)szDefaultOSName
);
112 SendDlgItemMessage(hwndDlg
, IDC_STRECOSCOMBO
, CB_SETCURSEL
, (WPARAM
)0, (LPARAM
)0);
115 iTimeout
= GetPrivateProfileInt(szBootLdrSection
, _T("timeout"), 0, m_szFreeldrIni
);
116 SetTimeout(hwndDlg
, iTimeout
);
118 SendDlgItemMessage(hwndDlg
, IDC_STRECLIST
, BM_SETCHECK
, (WPARAM
)BST_CHECKED
, (LPARAM
)0);
125 switch(LOWORD(wParam
))
129 ShellExecute(0, _T("open"), _T("notepad"), m_szFreeldrIni
, NULL
, SW_SHOWNORMAL
);
135 if (SendDlgItemMessage(hwndDlg
, IDC_STRECLIST
, BM_GETCHECK
, (WPARAM
)0, (LPARAM
)0) == BST_CHECKED
)
136 iTimeout
= SendDlgItemMessage(hwndDlg
, IDC_STRRECLISTUPDWN
, UDM_GETPOS
, (WPARAM
)0, (LPARAM
)0);
139 _stprintf(szTimeout
, _T("%i"), iTimeout
);
140 WritePrivateProfileString(szBootLdrSection
, _T("timeout"), szTimeout
, m_szFreeldrIni
);
151 if (SendDlgItemMessage(hwndDlg
, IDC_STRECLIST
, BM_GETCHECK
, (WPARAM
)0, (LPARAM
)0) == BST_CHECKED
)
152 SetTimeout(hwndDlg
, 30);
154 SetTimeout(hwndDlg
, 0);