WNetCancelConnection2(..) gibt NO_ERROR zurück.
Ich kann/könnte den Laufwerksbuchstaben auch wieder frei für ein neues Netzlaufwerk verwenden. Das passt schon.
Allerdings suche ich mir vor dem Netzlaufwerk-Verbinden einen freien Laufwerksbuchstaben herraus.
Da aber der Explorer die getrennten Netzlaufwerksbuchstaben beibehält, bekommen ich immer wieder einen neuen Buchstaben zurück, bis ich letztendlich keinen Buchstaben mehr zur Verfügung habe.
PseudoCode:
Delphi-Quellcode:
For LW := 'Z' downto 'C' do
if Not DriveIsReady(LW) then
Result := LW;
DriveIsReady:
Delphi-Quellcode:
function DriveIsReady(const Drive: string): Boolean;
var
wfd : TWin32FindData;
hFindData : THandle;
begin
SetErrorMode(SEM_FAILCRITICALERRORS);
hFindData := FindFirstFile(Pointer(Drive + '*.*'), wfd);
if hFindData <> INVALID_HANDLE_VALUE then
begin
Result := True;
end
else
begin
Result := False;
end;
Windows.FindClose(hFindData);
SetErrorMode(0);
end;
Letztendlich habe ich "eine ganze Latte" an getrennten Netzlaufwerken in meinem Explorer stehen, die alle frei wären, aber mein Programm findet keinen freien Laufwerksbuchstaben. Das is 'n bissl doof!
Entweder muß ich der Funktion DriveIsReady etwas ändern, damit sie getrennte Laufwerke berücksichtigt (nur was
), oder aber ich kriege den Laufwerksbuchstaben aus dem Explorer, was mir lieber wäre.