하드 디스크의 드라이브명, 파일시스템, 볼륨명등의
드라이브 리스트를 구했습니다.
이 리스트에서 선택한 하드 디스크를 포맷 하려고 합니다.
델파이 코드 (API 등)을 이용하여 직접 포맷이 되면 좋겠고,
윈도우에서 지원하는 포맷 프로그램을 띄우는 방법도 좋습니다.
단 드라이브명(A: C: D: 등), 파일시스템(FAT32/NTFS), 빠른 포맷 등의 값을 파라메터로 넘겼으면 합니다.
SHFormatDrive API는 플로피디스크만 되는것 같습니다.
두번째 질문입니다.
포맷할때나 포맷된 디스크에 대해 드라이브명을 바꿀수 있을까요?
예를 들면 D:\ 드라이브를 P:\드라이브로 이름을 바꾸는 방법입니다.
이상은 모두 코딩으로 해결하려고 합니다.
윈도우 제어판에서 하는것이 아닙니다.
감사합니다.
SHFormatDrive API 는 시스템의 포맷 다이얼로그를 띄워 주는 것입니다..
그러므로, 플로피만 포맷 되는것이 아니지요..
아래 예제를 참고하셔서 즐거운 프로그래밍 하세요..
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';
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('Error formatting the drive');
SHFMT_CANCEL : ShowMessage('User canceled formatting the
drive');
SHFMT_NOFORMAT : ShowMessage('No Format')
else
ShowMessage('Disk has been formatted');
end;
except
end;
end;
그리고, 아래 사이트를 참고해 보세요..
http://www.efg2.com/Lab/Library/Delphi/IO/DisksDrives.htm