lo que debes hacer es un poco facil aunque se puede complicar un poco de acuerdo a tu desenvolvimiento lo que debes de hacer es crear una funcion por ejemplo:
function espaciolibre( 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;
//esta funcion la realizamos para saber el espacio libre en disco
y luego la llamamos, igualandola a donde queremos que nos salga; ejemplo
Label1.Caption:=IntToStr( espaciolibre('c') );
esta es la idea basica para resorvel tu problema aunque en tu caso debes de poner un temporizador para que cada diez minuto te tire un comentario sobre el disco. esta funcion solo te dira la cantidad de espacio libre es decir que debes de hacer un sub-programa que te haga el porciento de espacio libre en el disco por ejemplo si el disgo es de 20gb y tiene ocupado 10 gb lo que debes de hacer es una regla de tres 20gb--------100%
10gb------------X
X:=(10*100)/2=50%
y ya.
si todavia posees duda me puedes escribir a:
elcazador18@yahoo.comespero que con mi critica te puedas guiar
buena suerte....