mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 20:03:12 +00:00
[SHELL32]
- Fix exceptions when starting drive properties dialog svn path=/trunk/; revision=54703
This commit is contained in:
parent
2c53cb44ab
commit
3559384588
1 changed files with 50 additions and 64 deletions
|
@ -443,55 +443,56 @@ DriveGeneralDlg(
|
||||||
LPARAM lParam
|
LPARAM lParam
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
LPPROPSHEETPAGEW ppsp;
|
|
||||||
LPDRAWITEMSTRUCT drawItem;
|
|
||||||
STARTUPINFOW si;
|
|
||||||
PROCESS_INFORMATION pi;
|
|
||||||
WCHAR * lpstr;
|
|
||||||
WCHAR szPath[MAX_PATH];
|
|
||||||
UINT length;
|
|
||||||
LPPSHNOTIFY lppsn;
|
|
||||||
|
|
||||||
switch(uMsg)
|
switch(uMsg)
|
||||||
{
|
{
|
||||||
case WM_INITDIALOG:
|
case WM_INITDIALOG:
|
||||||
ppsp = (LPPROPSHEETPAGEW)lParam;
|
{
|
||||||
|
LPPROPSHEETPAGEW ppsp = (LPPROPSHEETPAGEW)lParam;
|
||||||
if (ppsp == NULL)
|
if (ppsp == NULL)
|
||||||
break;
|
break;
|
||||||
lpstr = (WCHAR *)ppsp->lParam;
|
|
||||||
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)lpstr);
|
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)ppsp->lParam);
|
||||||
InitializeGeneralDriveDialog(hwndDlg, lpstr);
|
InitializeGeneralDriveDialog(hwndDlg, (LPWSTR)ppsp->lParam);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
}
|
||||||
case WM_DRAWITEM:
|
case WM_DRAWITEM:
|
||||||
drawItem = (LPDRAWITEMSTRUCT)lParam;
|
{
|
||||||
|
LPDRAWITEMSTRUCT drawItem = (LPDRAWITEMSTRUCT)lParam;
|
||||||
|
|
||||||
if (drawItem->CtlID >= 14013 && drawItem->CtlID <= 14015)
|
if (drawItem->CtlID >= 14013 && drawItem->CtlID <= 14015)
|
||||||
{
|
{
|
||||||
PaintStaticControls(hwndDlg, drawItem);
|
PaintStaticControls(hwndDlg, drawItem);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case WM_COMMAND:
|
case WM_COMMAND:
|
||||||
if (LOWORD(wParam) == 14010) /* Disk Cleanup */
|
if (LOWORD(wParam) == 14010) /* Disk Cleanup */
|
||||||
{
|
{
|
||||||
lpstr = (WCHAR*)GetWindowLongPtr(hwndDlg, DWLP_USER);
|
UINT length;
|
||||||
|
STARTUPINFOW si;
|
||||||
|
PROCESS_INFORMATION pi;
|
||||||
|
WCHAR wszPath[MAX_PATH];
|
||||||
|
LPWSTR lpStr = (WCHAR*)GetWindowLongPtr(hwndDlg, DWLP_USER);
|
||||||
|
|
||||||
ZeroMemory(&si, sizeof(si));
|
ZeroMemory(&si, sizeof(si));
|
||||||
si.cb = sizeof(si);
|
si.cb = sizeof(si);
|
||||||
ZeroMemory(&pi, sizeof(pi));
|
ZeroMemory(&pi, sizeof(pi));
|
||||||
if (!GetSystemDirectoryW(szPath, MAX_PATH))
|
if (!GetSystemDirectoryW(wszPath, MAX_PATH))
|
||||||
break;
|
break;
|
||||||
wcscat(szPath, L"\\cleanmgr.exe /D ");
|
wcscat(wszPath, L"\\cleanmgr.exe /D ");
|
||||||
length = wcslen(szPath);
|
length = wcslen(wszPath);
|
||||||
szPath[length] = lpstr[0];
|
wszPath[length] = lpStr[0];
|
||||||
szPath[length+1] = L'\0';
|
wszPath[length+1] = L'\0';
|
||||||
if (CreateProcessW(NULL, szPath, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
|
if (CreateProcessW(NULL, wszPath, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
|
||||||
{
|
{
|
||||||
CloseHandle(pi.hProcess);
|
CloseHandle(pi.hProcess);
|
||||||
CloseHandle(pi.hThread);
|
CloseHandle(pi.hThread);
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
case WM_NOTIFY:
|
case WM_NOTIFY:
|
||||||
lppsn = (LPPSHNOTIFY) lParam;
|
|
||||||
if (LOWORD(wParam) == 14000)
|
if (LOWORD(wParam) == 14000)
|
||||||
{
|
{
|
||||||
if (HIWORD(wParam) == EN_CHANGE)
|
if (HIWORD(wParam) == EN_CHANGE)
|
||||||
|
@ -500,24 +501,28 @@ DriveGeneralDlg(
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
else if (((LPNMHDR)lParam)->hwndFrom == GetParent(hwndDlg))
|
||||||
|
{
|
||||||
|
/* Property Sheet */
|
||||||
|
LPPSHNOTIFY lppsn = (LPPSHNOTIFY)lParam;
|
||||||
|
|
||||||
if (lppsn->hdr.code == PSN_APPLY)
|
if (lppsn->hdr.code == PSN_APPLY)
|
||||||
{
|
{
|
||||||
lpstr = (LPWSTR)GetWindowLongPtr(hwndDlg, DWLP_USER);
|
LPWSTR lpstr = (LPWSTR)GetWindowLongPtr(hwndDlg, DWLP_USER);
|
||||||
if (lpstr && GetDlgItemTextW(hwndDlg, 14000, szPath, sizeof(szPath) / sizeof(WCHAR)))
|
WCHAR buf[256];
|
||||||
{
|
|
||||||
szPath[(sizeof(szPath)/sizeof(WCHAR))-1] = L'\0';
|
if (lpstr && GetDlgItemTextW(hwndDlg, 14000, buf, sizeof(buf) / sizeof(WCHAR)))
|
||||||
SetVolumeLabelW(lpstr, szPath);
|
SetVolumeLabelW(lpstr, buf);
|
||||||
}
|
|
||||||
SetWindowLongPtr(hwndDlg, DWL_MSGRESULT, PSNRET_NOERROR);
|
SetWindowLongPtr(hwndDlg, DWL_MSGRESULT, PSNRET_NOERROR);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -670,7 +675,7 @@ SH_ShowDriveProperties(WCHAR * drive, LPCITEMIDLIST pidlFolder, LPCITEMIDLIST *
|
||||||
HPSXA hpsx = NULL;
|
HPSXA hpsx = NULL;
|
||||||
HPROPSHEETPAGE hpsp[MAX_PROPERTY_SHEET_PAGE];
|
HPROPSHEETPAGE hpsp[MAX_PROPERTY_SHEET_PAGE];
|
||||||
PROPSHEETHEADERW psh;
|
PROPSHEETHEADERW psh;
|
||||||
BOOL ret;
|
HWND hwnd;
|
||||||
UINT i;
|
UINT i;
|
||||||
WCHAR szName[MAX_PATH+6];
|
WCHAR szName[MAX_PATH+6];
|
||||||
DWORD dwMaxComponent, dwFileSysFlags;
|
DWORD dwMaxComponent, dwFileSysFlags;
|
||||||
|
@ -679,7 +684,7 @@ SH_ShowDriveProperties(WCHAR * drive, LPCITEMIDLIST pidlFolder, LPCITEMIDLIST *
|
||||||
|
|
||||||
ZeroMemory(&psh, sizeof(PROPSHEETHEADERW));
|
ZeroMemory(&psh, sizeof(PROPSHEETHEADERW));
|
||||||
psh.dwSize = sizeof(PROPSHEETHEADERW);
|
psh.dwSize = sizeof(PROPSHEETHEADERW);
|
||||||
//psh.dwFlags = PSH_USECALLBACK | PSH_PROPTITLE;
|
psh.dwFlags = 0; // FIXME: make it modeless
|
||||||
psh.hwndParent = NULL;
|
psh.hwndParent = NULL;
|
||||||
psh.nStartPage = 0;
|
psh.nStartPage = 0;
|
||||||
psh.phpage = hpsp;
|
psh.phpage = hpsp;
|
||||||
|
@ -691,25 +696,17 @@ SH_ShowDriveProperties(WCHAR * drive, LPCITEMIDLIST pidlFolder, LPCITEMIDLIST *
|
||||||
psh.dwFlags |= PSH_PROPTITLE;
|
psh.dwFlags |= PSH_PROPTITLE;
|
||||||
if (!wcslen(szName))
|
if (!wcslen(szName))
|
||||||
{
|
{
|
||||||
/* FIXME
|
/* FIXME: check if disk is a really a local hdd */
|
||||||
* check if disk is a really a local hdd
|
|
||||||
*/
|
|
||||||
i = LoadStringW(shell32_hInstance, IDS_DRIVE_FIXED, szName, sizeof(szName) / sizeof(WCHAR) - 6);
|
i = LoadStringW(shell32_hInstance, IDS_DRIVE_FIXED, szName, sizeof(szName) / sizeof(WCHAR) - 6);
|
||||||
if (i > 0 && i < (sizeof(szName) / sizeof(WCHAR)) - 6)
|
if (i > 0 && i < (sizeof(szName) / sizeof(WCHAR)) - 6)
|
||||||
{
|
wsprintf(szName + i, L" (%s)", drive);
|
||||||
szName[i] = L' ';
|
|
||||||
szName[i+1] = L'(';
|
|
||||||
wcscpy(&szName[i+2], drive);
|
|
||||||
szName[i+4] = L')';
|
|
||||||
szName[i+5] = L'\0';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DriveType = GetDriveTypeW(drive);
|
DriveType = GetDriveTypeW(drive);
|
||||||
for (i = 0; i < DRIVE_PROPERTY_PAGES; i++)
|
for (i = 0; i < DRIVE_PROPERTY_PAGES; i++)
|
||||||
{
|
{
|
||||||
if (PropPages[i].DriveType == (UINT) - 1 || (PropPages[i].DriveType != (UINT) - 1 && PropPages[i].DriveType == DriveType))
|
if (PropPages[i].DriveType == (UINT)-1 || PropPages[i].DriveType == DriveType)
|
||||||
{
|
{
|
||||||
HPROPSHEETPAGE hprop = SH_CreatePropertySheetPage(PropPages[i].resname, PropPages[i].dlgproc, (LPARAM)drive, NULL);
|
HPROPSHEETPAGE hprop = SH_CreatePropertySheetPage(PropPages[i].resname, PropPages[i].dlgproc, (LPARAM)drive, NULL);
|
||||||
if (hprop)
|
if (hprop)
|
||||||
|
@ -724,19 +721,16 @@ SH_ShowDriveProperties(WCHAR * drive, LPCITEMIDLIST pidlFolder, LPCITEMIDLIST *
|
||||||
{
|
{
|
||||||
hpsx = SHCreatePropSheetExtArrayEx(HKEY_CLASSES_ROOT, L"Drive", MAX_PROPERTY_SHEET_PAGE - DRIVE_PROPERTY_PAGES, pDataObj);
|
hpsx = SHCreatePropSheetExtArrayEx(HKEY_CLASSES_ROOT, L"Drive", MAX_PROPERTY_SHEET_PAGE - DRIVE_PROPERTY_PAGES, pDataObj);
|
||||||
if (hpsx)
|
if (hpsx)
|
||||||
{
|
|
||||||
SHAddFromPropSheetExtArray(hpsx, (LPFNADDPROPSHEETPAGE)AddPropSheetPageProc, (LPARAM)&psh);
|
SHAddFromPropSheetExtArray(hpsx, (LPFNADDPROPSHEETPAGE)AddPropSheetPageProc, (LPARAM)&psh);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
ret = PropertySheetW(&psh);
|
hwnd = (HWND)PropertySheetW(&psh);
|
||||||
|
|
||||||
if (hpsx)
|
if (hpsx)
|
||||||
SHDestroyPropSheetExtArray(hpsx);
|
SHDestroyPropSheetExtArray(hpsx);
|
||||||
|
|
||||||
if (ret < 0)
|
if (!hwnd)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
else
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -804,7 +798,6 @@ GetDefaultClusterSize(LPWSTR szFs, PDWORD pClusterSize, PULARGE_INTEGER TotalNum
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
InsertDefaultClusterSizeForFs(HWND hwndDlg, PFORMAT_DRIVE_CONTEXT pContext)
|
InsertDefaultClusterSizeForFs(HWND hwndDlg, PFORMAT_DRIVE_CONTEXT pContext)
|
||||||
{
|
{
|
||||||
|
@ -1011,9 +1004,8 @@ InitializeFormatDriveDlg(HWND hwndDlg, PFORMAT_DRIVE_CONTEXT pContext)
|
||||||
ShowWindow(GetDlgItem(hwndDlg, 28678), SW_HIDE);
|
ShowWindow(GetDlgItem(hwndDlg, 28678), SW_HIDE);
|
||||||
}
|
}
|
||||||
|
|
||||||
HWND FormatDrvDialog = NULL;
|
static HWND FormatDrvDialog = NULL;
|
||||||
BOOLEAN bSuccess = FALSE;
|
static BOOLEAN bSuccess = FALSE;
|
||||||
|
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
NTAPI
|
NTAPI
|
||||||
|
@ -1050,10 +1042,6 @@ FormatExCB(
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
FormatDrive(HWND hwndDlg, PFORMAT_DRIVE_CONTEXT pContext)
|
FormatDrive(HWND hwndDlg, PFORMAT_DRIVE_CONTEXT pContext)
|
||||||
{
|
{
|
||||||
|
@ -1155,7 +1143,6 @@ FormatDrive(HWND hwndDlg, PFORMAT_DRIVE_CONTEXT pContext)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
INT_PTR
|
INT_PTR
|
||||||
CALLBACK
|
CALLBACK
|
||||||
FormatDriveDlg(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
FormatDriveDlg(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
|
@ -1191,7 +1178,6 @@ FormatDriveDlg(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
BOOL
|
BOOL
|
||||||
InitializeFmifsLibrary(PFORMAT_DRIVE_CONTEXT pContext)
|
InitializeFmifsLibrary(PFORMAT_DRIVE_CONTEXT pContext)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue