Delphi y las api de windows

Hola estudio ingenieria en informatica debo hacer una tarea pero no se muy bien como. Debo usar delphi para generar un programa en windows 2000 que se ejecute en segundo plano, se inicie como servicio y cada 10 minutos verifique la cantidad de disco duro disponible, si esta es mayor al 90% enviar un mensaje de alarma.
Se que hay una api de windows que entrega el espacio disponible pero no se cual es ni como se ocupa.
podrias ayudarme?
Respuesta
1
Quizás las siguiente funciones puedan ayudarte
function FindtheFreeMemory:dword;
var MemoryStatus : TMemoryStatus;
begin
MemoryStatus.dwLength := sizeof(TMEMORYSTATUS);
GlobalMemoryStatus(MemoryStatus);
Showmessage(inttostr(MemoryStatus.dwTotalPhys) + ' Free ' +
inttostr(MemoryStatus.dwAvailPhys));
Result := MemoryStatus.dwAvailPhys;
end;
function SizeofDisk(const Drive: char): int64;
var
DrvNum: byte;
begin
DrvNum := ord(Drive);
Result := DiskSize(DrvNum­$40);
end;
function FreeOnDisk(const Drive: char): int64;
var
DrvNum: byte;
begin
DrvNum := ord(Drive);
Result := DiskFree(DrvNum­$40);
end;

1 respuesta más de otro experto

Respuesta
1
Carroba usa esta función:
function LibreEnDisco( const Drive : Char ) : LongInt;
var
lpRootPathName : PChar; { address of root path }
lpSectorsPerCluster : DWORD; { address of sectors per cluster }
lpBytesPerSector : DWORD; { address of bytes per sector }
lpNumberOfFreeClusters : DWORD; { address of number of free clusters }
lpTotalNumberOfClusters : DWORD; { address of total number of clusters }
begin
lpRootPathName := PChar( Drive + ':\' );
if Windows.GetDiskFreeSpace( lpRootPathName,
lpSectorsPerCluster,
lpBytesPerSector,
lpNumberOfFreeClusters,
lpTotalNumberOfClusters ) then
Result := lpNumberOfFreeClusters * lpBytesPerSector * lpSectorsPerCluster
else
Result := -1;
end;
Y llamala desde este comando:
Label1.Caption:=IntToStr( LibreEnDisco('c') );
Suerte!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas