Home » Tipps & Tricks » System » Hardware » Feststellen, ob ein Laufwerk bereit ist

Feststellen, ob ein Laufwerk bereit ist

Dieses Beispiel greift auf die Win32-API-Funktion GetVolumeInformation zurück. Diese ermittelt normalerweise Datenträgerinformationen, gibt jedoch auch false zurück, wenn der Datenträger nicht bereit ist. Da standardmäßig in diesem Fall ein Systemdialog erscheinen würde, der zum Einlegen eines Datenträgers auffordert, muss dieses Verhalten mit dem Setzen des ErrorModes auf SEM_FAILCRITICALERRORS unterdrückt werden.

function LaufwerkBereit(root: string): boolean;
var Oem: cardinal;
  Dw1, Dw2: DWORD;
begin
  Oem := SetErrorMode(SEM_FAILCRITICALERRORS);
  result := GetVolumeInformation(PCHAR(Root), nil, 0, nil, Dw1, Dw2, nil, 0);
  SetErrorMode(Oem) ;
end;

Beispiel eines Aufrufs:

procedure TForm1.Button1Click(Sender: TObject);
begin
  if Laufwerkbereit('A:\') then ShowMessage('Laufwerk bereit!')
  else ShowMessage('Laufwerk nicht bereit!');
end;