Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 769

/ вопрос открыт /

Здравствуйте, господа эксперты! Как можно запустить форматирование и дефрагментацию диска?

alone Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: alone (статус: Посетитель)
Вопрос отправлен: 20 июля 2007, 00:48
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Feniks

Здравствуйте, Гадлевский Олег Вячеславович!
Ну форматирование можно попробовать тупым запуском проги format использую функцию ShellExec, а дефрагментацию - использую ту же функцию запустить маленький дефрагментатор Contig. Он весит 65 кил и у него есть чудесная коммандная строка, к тому же он юзает на прямую API функции Винды.
Качать тут http://www.microsoft.com/technet/sysinternals/FileAndDisk/Contig.mspx

Ответ отправил: Feniks (статус: Бакалавр)
Время отправки: 20 июля 2007, 11:12
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 3; последнее сообщение — 2 августа 2007, 12:22; участников в обсуждении: 3.
Aleksey P. Kharitonov

Aleksey P. Kharitonov (статус: 3-ий класс), 20 июля 2007, 02:09 [#1]:

Если из под Windows то с помощью функции ShellExecute (см. MSDN)
Градов Ю.М.

Градов Ю.М. (статус: 8-ой класс), 21 июля 2007, 11:36 [#2]:

const SHFMT_DRV_A = 0;
const SHFMT_DRV_B = 1;
const SHFMT_ID_DEFAULT = $FFFF;
const SHFMT_OPT_QUICKFORMAT = 0;
const SHFMT_OPT_FULLFORMAT = 1;
const SHFMT_OPT_SYSONLY = 2;
const SHFMT_ERROR = -1;
const SHFMT_CANCEL = -2;
const SHFMT_NOFORMAT = -3;
function SHFormatDrive(hWnd : HWND;
Drive : Word;
fmtID : Word;
Options : Word) : Longint
stdcall; external \'Shell32.dll\' name \'SHFormatDrive\';

...
implementation
...

procedure TForm1.Button1Click(Sender: TObject);
var
FmtRes: longint;
begin
try
FmtRes:= ShFormatDrive(Handle,
SHFMT_DRV_A,
SHFMT_ID_DEFAULT,
SHFMT_OPT_QUICKFORMAT);
case FmtRes of
SHFMT_ERROR :
ShowMessage(\'Ошибка форматирования диска\');
SHFMT_CANCEL :
ShowMessage(\'Пользователь отменил форматирование диска\');
SHFMT_NOFORMAT :
ShowMessage(\'Не форматировать\')
else
ShowMessage(\'Диск отформатирован без проблем\');
end;
except
end;
end;
Feniks

Feniks (статус: Бакалавр), 2 августа 2007, 12:22 [#3]:

Можно запустить внешнюю команду:

WinExec(PChar(\'rundll32 shell32,SHFormatDrive\'), SW_Show);
"rundll32 shell32,SHFormatDrive" - Запустить окно форматирования дискеты (\'Format Disk (A)\')

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:41
Выполнено за 0.02 сек.