La Web del Programador: Comunidad de Programadores
 
    Pregunta:  1920 - CUADROS DE DIALOGO WIN95
Autor:  Alberto Osuna Núñez
Necesito hacer que mi aplicación permita formatear un disco, pero sin salir de la misma aplicación.

¿Como es que puedo ejecutar cuadros de diálogo de Windows desde una aplicación Delphi que no están soportados por los componentes que se incluyen con Deplhi como lo es el cuadro de diálogo de formateo de discos?

Espero que alguien pueda ayudarme y de antemano muchas gracias.

  Respuesta:  Dario Alvarez Aranda
Hola...

Tengo un componente (no lo hice yo), que permite llamar casi cualquier cuadro de dialogo de Windows, tales como: ejecutyar, buscar, formatear, etc. Si los necesitas escribeme y te los envio.

  Respuesta:  Jairo Espinal
Bien amigo esto se hace aciendo una llamada a la api de windows así:
Define las siguientes constantes en la seccion de implementacion de tu unit

implementation
const
SHFMT_DRV_A = 0; //drive a
SHFMT_DRV_B = 1; //drive b
SHFMT_ID_DEFAULT = $FFFF; //tamaño de disco por defecto
SHFMT_OPT_QUICKFORMAT = 0; //formato rapido
SHFMT_OPT_FULLFORMAT = 1; //formato completo
SHFMT_OPT_SYSONLY = 2; //solo archivos de sistema
SHFMT_ERROR = -1; //valor que devuelve si se produce un error
SHFMT_CANCEL = -2; //valor si se cancela
SHFMT_NOFORMAT = -3; //valor si el disco se formateo

seguidamente en la misma seccion declara la funcion de formateo

function SHFormatDrive(hWnd : HWND; Drive : Word;
fmtID : Word;
Options : Word) : Longint
stdcall; external ´Shell32.dll´ name ´SHFormatDrive´;

despues debes hacer la llamada a la funcion

procedure TFormato.Button1Click(Sender: TObject);
var
FmtRes : longint;
begin
try
FmtRes:= ShFormatDrive(Handle, SHFMT_DRV_A,SHFMT_ID_DEFAULT, SHFMT_OPT_FULLFORMAT);
case FmtRes of
SHFMT_ERROR :
ShowMessage(´Error formatiando el drive´);
SHFMT_CANCEL :
ShowMessage(´Formateo cancelado por el usuario´);
SHFMT_NOFORMAT :
ShowMessage(´No se pudo formatear el disco´)
else
ShowMessage(´El disco ha sido formateado´);
end;
except
end;
end;


Espero te sirva saludos