> U help-u sam i ja naisao na ovaj primer, ali, on mi prikazuje velicinu particije, recimo C ili D, kao i slobodnog prostora. Ali, izgleda da vi
> niste mene dobro razumeli, meni treba opcija ( kod ) da prikazem ukupnu velicinu HDD-a. Znaci, ne particije, nego HDD,
> ako je on velicine 40GB da to i u TLabel ispisem?!
Možeš sabrati veličine svih particija i tako dobiti veličinu diska ili možeš koristiti neku od ovih funkcija:
Code:
uses
JwaWinIoctl; // Potraži na netu (autor je Marcel van Brakel, možda ima i u jedi biblioteci)
function GetDiskSize: Int64;
var
Info: GET_LENGTH_INFORMATION;
hDisk: THandle;
Temp: Cardinal;
begin
Result := 0;
hDisk := CreateFile('\\.\PhysicalDrive0', 0, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
if hDisk <> INVALID_HANDLE_VALUE then
begin
if DeviceIoControl(hDisk, IOCTL_DISK_GET_LENGTH_INFO, nil, 0, @Info, sizeof(Info), Temp, nil) then
Result := Info.Length.QuadPart;
CloseHandle(hDisk);
end;
end;
function GetDiskSize2: Int64;
var
hDisk: THandle;
Info: DISK_GEOMETRY;
Temp: Cardinal;
begin
Result := 0;
hDisk := CreateFile('\\.\PhysicalDrive0', 0, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
if hDisk <> INVALID_HANDLE_VALUE then
begin
if DeviceIoControl(hDisk, IOCTL_DISK_GET_DRIVE_GEOMETRY, nil, 0, @Info, sizeof(Info), Temp, nil) then
Result := Info.Cylinders.QuadPart * Info.TracksPerCylinder * Info.SectorsPerTrack * Info.BytesPerSector;
CloseHandle(hDisk);
end;
end;