prueba esto: (tomado de trucomania):
Existe una función en la DLL: Shell32.dll : ShFormatDrive(), que lo que hace es lanzar la ventana que existe en el menú archivo del Explorador de Windows para formatear discos.
En el truco [81], usamos esta misma función, salvo que usamos otro método para ejecutar la función: la ejecutamos a través de la utilidad RunDll de Windows.
En nuestro programa haríamos los siguiente;
Declararemos estas constantes:
{Unidades} const DISCO_A = 0;
const DISCO_B = 1;
const POR_DEFECTO = $FFFF;
{opciones} const QUICKFORMAT = 0;
{Formateo rápido} const FULLFORMAT = 1;
{Formateo completo} const SYSONLY = 2;
{Formateo con archivos del sistema} {Si ha habido algún error la función devuelve un LongInt con estos valores} const ERROR = -1;
const CANCELADO = -2;
const NO_FORMATEAR = -3;
y esta función:
function SHFormatDrive(hWnd : HWND; Unidad : Word; fmtID : Word; Opciones : Word) : Longint stdcall; external 'Shell32.dll' name 'SHFormatDrive';
Por ejemplo para formatear la unidad A: y que sea un formateo rápido, pondríamos;
procedure TForm1.Button1Click(Sender: TObject);
var Format_Result : longint;
begin try Format_Result:= ShFormatDrive(Handle, DISCO_A, POR_DEFECTO, QUICKFORMAT);
case Format_Result
of ERROR : ShowMessage('Error al formatear el disco'); CANCELADO : ShowMessage('Operación cancelada por el usuario'); NO_FORMATEAR : ShowMessage('No se ha formateado')
else ShowMessage('El disco ha sido formateado satisfactoriamente');
end; except
end; end;