mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 15:02:59 +00:00
Save user cursor schemes using the environment variables SystemRoot, USERPROFILE or ProgramFiles in the cursor paths instead of absolute paths.
svn path=/trunk/; revision=26655
This commit is contained in:
parent
651efa4a73
commit
0ab223d167
1 changed files with 53 additions and 9 deletions
|
@ -424,6 +424,42 @@ ButtonProc(IN HWND hwndDlg,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static VOID
|
||||||
|
CompressPath(LPTSTR lpShortPath, LPTSTR lpPath)
|
||||||
|
{
|
||||||
|
TCHAR szUserProfile[MAX_PATH];
|
||||||
|
TCHAR szSystemRoot[MAX_PATH];
|
||||||
|
TCHAR szProgramFiles[MAX_PATH];
|
||||||
|
DWORD dwUserProfile;
|
||||||
|
DWORD dwSystemRoot;
|
||||||
|
DWORD dwProgramFiles;
|
||||||
|
|
||||||
|
dwUserProfile = GetEnvironmentVariable(_T("USERPROFILE"), szUserProfile, MAX_PATH);
|
||||||
|
dwSystemRoot = GetEnvironmentVariable(_T("SystemRoot"), szSystemRoot, MAX_PATH);
|
||||||
|
dwProgramFiles = GetEnvironmentVariable(_T("ProgramFiles"), szProgramFiles, MAX_PATH);
|
||||||
|
|
||||||
|
if (dwUserProfile > 0 && _tcsncmp(lpPath, szUserProfile, dwUserProfile) == 0)
|
||||||
|
{
|
||||||
|
_tcscpy(lpShortPath, _T("%USERPROFILE%"));
|
||||||
|
_tcscat(lpShortPath, &lpPath[dwUserProfile]);
|
||||||
|
}
|
||||||
|
else if (dwSystemRoot > 0 && _tcsncmp(lpPath, szSystemRoot, dwSystemRoot) == 0)
|
||||||
|
{
|
||||||
|
_tcscpy(lpShortPath, _T("%SystemRoot%"));
|
||||||
|
_tcscat(lpShortPath, &lpPath[dwSystemRoot]);
|
||||||
|
}
|
||||||
|
else if (dwProgramFiles > 0 && _tcsncmp(lpPath, szProgramFiles, dwProgramFiles) == 0)
|
||||||
|
{
|
||||||
|
_tcscpy(lpShortPath, _T("%ProgramFiles%"));
|
||||||
|
_tcscat(lpShortPath, &lpPath[dwProgramFiles]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_tcscpy(lpShortPath, lpPath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static BOOL
|
static BOOL
|
||||||
EnumerateCursorSchemes(HWND hwndDlg)
|
EnumerateCursorSchemes(HWND hwndDlg)
|
||||||
{
|
{
|
||||||
|
@ -433,6 +469,7 @@ EnumerateCursorSchemes(HWND hwndDlg)
|
||||||
DWORD dwValueName;
|
DWORD dwValueName;
|
||||||
TCHAR szSystemScheme[MAX_PATH];
|
TCHAR szSystemScheme[MAX_PATH];
|
||||||
TCHAR szValueData[2000];
|
TCHAR szValueData[2000];
|
||||||
|
TCHAR szTempData[2000];
|
||||||
DWORD dwValueData;
|
DWORD dwValueData;
|
||||||
LONG lError;
|
LONG lError;
|
||||||
HWND hDlgCtrl;
|
HWND hDlgCtrl;
|
||||||
|
@ -455,19 +492,21 @@ EnumerateCursorSchemes(HWND hwndDlg)
|
||||||
if (lError == ERROR_NO_MORE_ITEMS)
|
if (lError == ERROR_NO_MORE_ITEMS)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (_tcslen(szValueData) > 0)
|
ExpandEnvironmentStrings(szValueData, szTempData, 2000);
|
||||||
|
|
||||||
|
if (_tcslen(szTempData) > 0)
|
||||||
{
|
{
|
||||||
LPTSTR lpCopy, lpStart;
|
LPTSTR lpCopy, lpStart;
|
||||||
|
|
||||||
/* Remove quotation marks */
|
/* Remove quotation marks */
|
||||||
if (szValueData[0] == _T('"'))
|
if (szTempData[0] == _T('"'))
|
||||||
{
|
{
|
||||||
lpStart = szValueData + 1;
|
lpStart = szValueData + 1;
|
||||||
szValueData[_tcslen(szValueData) - 1] = 0;
|
szTempData[_tcslen(szTempData) - 1] = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
lpStart = szValueData;
|
lpStart = szTempData;
|
||||||
}
|
}
|
||||||
|
|
||||||
lpCopy = _tcsdup(lpStart);
|
lpCopy = _tcsdup(lpStart);
|
||||||
|
@ -661,6 +700,7 @@ SaveCursorScheme(HWND hwndDlg)
|
||||||
TCHAR szSystemScheme[MAX_PATH];
|
TCHAR szSystemScheme[MAX_PATH];
|
||||||
TCHAR szSchemeName[MAX_PATH];
|
TCHAR szSchemeName[MAX_PATH];
|
||||||
TCHAR szNewSchemeName[MAX_PATH];
|
TCHAR szNewSchemeName[MAX_PATH];
|
||||||
|
TCHAR szTempPath[MAX_PATH];
|
||||||
TCHAR szTitle[128];
|
TCHAR szTitle[128];
|
||||||
TCHAR szText[256];
|
TCHAR szText[256];
|
||||||
INT nSel;
|
INT nSel;
|
||||||
|
@ -739,9 +779,10 @@ SaveCursorScheme(HWND hwndDlg)
|
||||||
|
|
||||||
for (index = IDS_ARROW, i = 0; index <= IDS_HAND; index++, i++)
|
for (index = IDS_ARROW, i = 0; index <= IDS_HAND; index++, i++)
|
||||||
{
|
{
|
||||||
|
CompressPath(szTempPath, g_CursorData[i].szCursorPath);
|
||||||
if (i > 0)
|
if (i > 0)
|
||||||
_tcscat(lpSchemeData, _T(","));
|
_tcscat(lpSchemeData, _T(","));
|
||||||
_tcscat(lpSchemeData, g_CursorData[i].szCursorPath);
|
_tcscat(lpSchemeData, szTempPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (RegOpenCurrentUser(KEY_READ | KEY_SET_VALUE, &hCuKey) != ERROR_SUCCESS)
|
if (RegOpenCurrentUser(KEY_READ | KEY_SET_VALUE, &hCuKey) != ERROR_SUCCESS)
|
||||||
|
@ -753,8 +794,9 @@ SaveCursorScheme(HWND hwndDlg)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
lError = RegSetValueEx(hCuCursorKey, szNewSchemeName, 0, REG_EXPAND_SZ,
|
lError = RegSetValueEx(hCuCursorKey, szNewSchemeName, 0,
|
||||||
(LPBYTE)lpSchemeData, nLength * sizeof(TCHAR));
|
REG_EXPAND_SZ, (LPBYTE)lpSchemeData,
|
||||||
|
(_tcslen(lpSchemeData) + 1) * sizeof(TCHAR));
|
||||||
|
|
||||||
RegCloseKey(hCuCursorKey);
|
RegCloseKey(hCuCursorKey);
|
||||||
RegCloseKey(hCuKey);
|
RegCloseKey(hCuKey);
|
||||||
|
@ -1080,6 +1122,7 @@ ApplyCursorScheme(HWND hwndDlg)
|
||||||
{
|
{
|
||||||
TCHAR szSchemeName[MAX_PATH];
|
TCHAR szSchemeName[MAX_PATH];
|
||||||
TCHAR szSystemScheme[MAX_PATH];
|
TCHAR szSystemScheme[MAX_PATH];
|
||||||
|
TCHAR szTempPath[MAX_PATH];
|
||||||
LPTSTR lpSchemeData;
|
LPTSTR lpSchemeData;
|
||||||
DWORD dwNameLength;
|
DWORD dwNameLength;
|
||||||
DWORD dwSchemeSource;
|
DWORD dwSchemeSource;
|
||||||
|
@ -1131,9 +1174,10 @@ ApplyCursorScheme(HWND hwndDlg)
|
||||||
|
|
||||||
for (index = IDS_ARROW, i = 0; index <= IDS_HAND; index++, i++)
|
for (index = IDS_ARROW, i = 0; index <= IDS_HAND; index++, i++)
|
||||||
{
|
{
|
||||||
|
CompressPath(szTempPath, g_CursorData[i].szCursorPath);
|
||||||
RegSetValueEx(hCursorKey, g_CursorData[i].lpValueName, 0,
|
RegSetValueEx(hCursorKey, g_CursorData[i].lpValueName, 0,
|
||||||
REG_EXPAND_SZ, (LPBYTE)g_CursorData[i].szCursorPath,
|
REG_EXPAND_SZ, (LPBYTE)szTempPath,
|
||||||
(_tcslen(g_CursorData[i].szCursorPath) + 1) * sizeof(TCHAR));
|
(_tcslen(szTempPath) + 1) * sizeof(TCHAR));
|
||||||
}
|
}
|
||||||
|
|
||||||
RegCloseKey(hCursorKey);
|
RegCloseKey(hCursorKey);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue